{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e8452fe3-3a11-4b07-89ad-b70a314225db",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cfa6c228-9d0b-499b-89e9-200d4dc22b01",
   "metadata": {},
   "source": [
    "### 4.1.3 DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a485bd00-0619-41c6-a868-e92ebf0fb519",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.66562459, -0.48217646,  0.58038863, -0.58240501, -1.15203568],\n",
       "       [ 0.94363185, -0.9072751 ,  1.89435878,  0.69386168, -1.09819673],\n",
       "       [ 1.2125201 ,  0.15405901, -0.56313844,  0.50940206, -1.48229571],\n",
       "       [-0.56087995,  1.04425976, -0.24805923,  0.98747685, -0.50658614],\n",
       "       [ 1.16085931, -0.56465169,  0.43457692,  1.00584088, -1.16983689],\n",
       "       [-0.44453601, -0.14435704,  1.66393156,  0.20783226, -0.98771392],\n",
       "       [-0.5495292 ,  1.04557194,  0.3290994 , -0.88037861, -0.90458174],\n",
       "       [ 0.62239578,  0.86773606,  1.06362892, -0.5797516 ,  1.70450219],\n",
       "       [ 2.03737859,  0.76657862,  0.7545098 ,  0.24860663,  1.70465695],\n",
       "       [-1.03120905, -0.7677685 ,  0.0127918 ,  1.45493108, -0.27143539]])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 创建一个符合正态分布的10个股票5天的涨跌幅数据\n",
    "stock_change = np.random.normal(0, 1, (10, 5))\n",
    "stock_change"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "858cae49-c032-4c00-8a7b-6a15886df881",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.665625</td>\n",
       "      <td>-0.482176</td>\n",
       "      <td>0.580389</td>\n",
       "      <td>-0.582405</td>\n",
       "      <td>-1.152036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.943632</td>\n",
       "      <td>-0.907275</td>\n",
       "      <td>1.894359</td>\n",
       "      <td>0.693862</td>\n",
       "      <td>-1.098197</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.212520</td>\n",
       "      <td>0.154059</td>\n",
       "      <td>-0.563138</td>\n",
       "      <td>0.509402</td>\n",
       "      <td>-1.482296</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.560880</td>\n",
       "      <td>1.044260</td>\n",
       "      <td>-0.248059</td>\n",
       "      <td>0.987477</td>\n",
       "      <td>-0.506586</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.160859</td>\n",
       "      <td>-0.564652</td>\n",
       "      <td>0.434577</td>\n",
       "      <td>1.005841</td>\n",
       "      <td>-1.169837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>-0.444536</td>\n",
       "      <td>-0.144357</td>\n",
       "      <td>1.663932</td>\n",
       "      <td>0.207832</td>\n",
       "      <td>-0.987714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>-0.549529</td>\n",
       "      <td>1.045572</td>\n",
       "      <td>0.329099</td>\n",
       "      <td>-0.880379</td>\n",
       "      <td>-0.904582</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.622396</td>\n",
       "      <td>0.867736</td>\n",
       "      <td>1.063629</td>\n",
       "      <td>-0.579752</td>\n",
       "      <td>1.704502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2.037379</td>\n",
       "      <td>0.766579</td>\n",
       "      <td>0.754510</td>\n",
       "      <td>0.248607</td>\n",
       "      <td>1.704657</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>-1.031209</td>\n",
       "      <td>-0.767769</td>\n",
       "      <td>0.012792</td>\n",
       "      <td>1.454931</td>\n",
       "      <td>-0.271435</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2         3         4\n",
       "0 -0.665625 -0.482176  0.580389 -0.582405 -1.152036\n",
       "1  0.943632 -0.907275  1.894359  0.693862 -1.098197\n",
       "2  1.212520  0.154059 -0.563138  0.509402 -1.482296\n",
       "3 -0.560880  1.044260 -0.248059  0.987477 -0.506586\n",
       "4  1.160859 -0.564652  0.434577  1.005841 -1.169837\n",
       "5 -0.444536 -0.144357  1.663932  0.207832 -0.987714\n",
       "6 -0.549529  1.045572  0.329099 -0.880379 -0.904582\n",
       "7  0.622396  0.867736  1.063629 -0.579752  1.704502\n",
       "8  2.037379  0.766579  0.754510  0.248607  1.704657\n",
       "9 -1.031209 -0.767769  0.012792  1.454931 -0.271435"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 生成DataFrame\n",
    "pd.DataFrame(stock_change)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b6faf0f0-cd50-4d3f-99cd-adc32c7dddb2",
   "metadata": {},
   "source": [
    "#### 添加行列索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "d27bda85-6938-41ff-9033-4820934f2949",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['股票1', '股票2', '股票3', '股票4', '股票5', '股票6', '股票7', '股票8', '股票9', '股票10']"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 添加行索引\n",
    "stock = [\"股票{}\".format(i) for i in range(1, 11)]\n",
    "stock"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "f718af4b-4f71-451c-b6d9-3486a15481dd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票1</th>\n",
       "      <td>-0.665625</td>\n",
       "      <td>-0.482176</td>\n",
       "      <td>0.580389</td>\n",
       "      <td>-0.582405</td>\n",
       "      <td>-1.152036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>0.943632</td>\n",
       "      <td>-0.907275</td>\n",
       "      <td>1.894359</td>\n",
       "      <td>0.693862</td>\n",
       "      <td>-1.098197</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>1.212520</td>\n",
       "      <td>0.154059</td>\n",
       "      <td>-0.563138</td>\n",
       "      <td>0.509402</td>\n",
       "      <td>-1.482296</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>-0.560880</td>\n",
       "      <td>1.044260</td>\n",
       "      <td>-0.248059</td>\n",
       "      <td>0.987477</td>\n",
       "      <td>-0.506586</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票5</th>\n",
       "      <td>1.160859</td>\n",
       "      <td>-0.564652</td>\n",
       "      <td>0.434577</td>\n",
       "      <td>1.005841</td>\n",
       "      <td>-1.169837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票6</th>\n",
       "      <td>-0.444536</td>\n",
       "      <td>-0.144357</td>\n",
       "      <td>1.663932</td>\n",
       "      <td>0.207832</td>\n",
       "      <td>-0.987714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票7</th>\n",
       "      <td>-0.549529</td>\n",
       "      <td>1.045572</td>\n",
       "      <td>0.329099</td>\n",
       "      <td>-0.880379</td>\n",
       "      <td>-0.904582</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票8</th>\n",
       "      <td>0.622396</td>\n",
       "      <td>0.867736</td>\n",
       "      <td>1.063629</td>\n",
       "      <td>-0.579752</td>\n",
       "      <td>1.704502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票9</th>\n",
       "      <td>2.037379</td>\n",
       "      <td>0.766579</td>\n",
       "      <td>0.754510</td>\n",
       "      <td>0.248607</td>\n",
       "      <td>1.704657</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票10</th>\n",
       "      <td>-1.031209</td>\n",
       "      <td>-0.767769</td>\n",
       "      <td>0.012792</td>\n",
       "      <td>1.454931</td>\n",
       "      <td>-0.271435</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             0         1         2         3         4\n",
       "股票1  -0.665625 -0.482176  0.580389 -0.582405 -1.152036\n",
       "股票2   0.943632 -0.907275  1.894359  0.693862 -1.098197\n",
       "股票3   1.212520  0.154059 -0.563138  0.509402 -1.482296\n",
       "股票4  -0.560880  1.044260 -0.248059  0.987477 -0.506586\n",
       "股票5   1.160859 -0.564652  0.434577  1.005841 -1.169837\n",
       "股票6  -0.444536 -0.144357  1.663932  0.207832 -0.987714\n",
       "股票7  -0.549529  1.045572  0.329099 -0.880379 -0.904582\n",
       "股票8   0.622396  0.867736  1.063629 -0.579752  1.704502\n",
       "股票9   2.037379  0.766579  0.754510  0.248607  1.704657\n",
       "股票10 -1.031209 -0.767769  0.012792  1.454931 -0.271435"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame(stock_change, index=stock)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "b04fe9db-3864-4d5c-accd-4bbeb69e6489",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',\n",
       "               '2018-01-05'],\n",
       "              dtype='datetime64[ns]', freq='B')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 添加列索引\n",
    "date_index = pd.date_range(start=\"20180101\", periods=5, freq=\"B\")\n",
    "date_index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "b6baf3d3-c41d-475b-8489-dd345d112bd0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2018-01-01</th>\n",
       "      <th>2018-01-02</th>\n",
       "      <th>2018-01-03</th>\n",
       "      <th>2018-01-04</th>\n",
       "      <th>2018-01-05</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票1</th>\n",
       "      <td>-0.665625</td>\n",
       "      <td>-0.482176</td>\n",
       "      <td>0.580389</td>\n",
       "      <td>-0.582405</td>\n",
       "      <td>-1.152036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>0.943632</td>\n",
       "      <td>-0.907275</td>\n",
       "      <td>1.894359</td>\n",
       "      <td>0.693862</td>\n",
       "      <td>-1.098197</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>1.212520</td>\n",
       "      <td>0.154059</td>\n",
       "      <td>-0.563138</td>\n",
       "      <td>0.509402</td>\n",
       "      <td>-1.482296</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>-0.560880</td>\n",
       "      <td>1.044260</td>\n",
       "      <td>-0.248059</td>\n",
       "      <td>0.987477</td>\n",
       "      <td>-0.506586</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票5</th>\n",
       "      <td>1.160859</td>\n",
       "      <td>-0.564652</td>\n",
       "      <td>0.434577</td>\n",
       "      <td>1.005841</td>\n",
       "      <td>-1.169837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票6</th>\n",
       "      <td>-0.444536</td>\n",
       "      <td>-0.144357</td>\n",
       "      <td>1.663932</td>\n",
       "      <td>0.207832</td>\n",
       "      <td>-0.987714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票7</th>\n",
       "      <td>-0.549529</td>\n",
       "      <td>1.045572</td>\n",
       "      <td>0.329099</td>\n",
       "      <td>-0.880379</td>\n",
       "      <td>-0.904582</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票8</th>\n",
       "      <td>0.622396</td>\n",
       "      <td>0.867736</td>\n",
       "      <td>1.063629</td>\n",
       "      <td>-0.579752</td>\n",
       "      <td>1.704502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票9</th>\n",
       "      <td>2.037379</td>\n",
       "      <td>0.766579</td>\n",
       "      <td>0.754510</td>\n",
       "      <td>0.248607</td>\n",
       "      <td>1.704657</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票10</th>\n",
       "      <td>-1.031209</td>\n",
       "      <td>-0.767769</td>\n",
       "      <td>0.012792</td>\n",
       "      <td>1.454931</td>\n",
       "      <td>-0.271435</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      2018-01-01  2018-01-02  2018-01-03  2018-01-04  2018-01-05\n",
       "股票1    -0.665625   -0.482176    0.580389   -0.582405   -1.152036\n",
       "股票2     0.943632   -0.907275    1.894359    0.693862   -1.098197\n",
       "股票3     1.212520    0.154059   -0.563138    0.509402   -1.482296\n",
       "股票4    -0.560880    1.044260   -0.248059    0.987477   -0.506586\n",
       "股票5     1.160859   -0.564652    0.434577    1.005841   -1.169837\n",
       "股票6    -0.444536   -0.144357    1.663932    0.207832   -0.987714\n",
       "股票7    -0.549529    1.045572    0.329099   -0.880379   -0.904582\n",
       "股票8     0.622396    0.867736    1.063629   -0.579752    1.704502\n",
       "股票9     2.037379    0.766579    0.754510    0.248607    1.704657\n",
       "股票10   -1.031209   -0.767769    0.012792    1.454931   -0.271435"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.DataFrame(stock_change, index=stock, columns=date_index)\n",
    "data"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "26bee5f9-3d4e-47ab-b81c-fa48aa5f118f",
   "metadata": {},
   "source": [
    "#### DataFrame的属性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "fd620c82-e98a-4e32-8adb-c095a82a7622",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10, 5)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取形状\n",
    "data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "7d3fa6f4-3e89-44dc-8507-3ebd9324584d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.66562459, -0.48217646,  0.58038863, -0.58240501, -1.15203568],\n",
       "       [ 0.94363185, -0.9072751 ,  1.89435878,  0.69386168, -1.09819673],\n",
       "       [ 1.2125201 ,  0.15405901, -0.56313844,  0.50940206, -1.48229571],\n",
       "       [-0.56087995,  1.04425976, -0.24805923,  0.98747685, -0.50658614],\n",
       "       [ 1.16085931, -0.56465169,  0.43457692,  1.00584088, -1.16983689],\n",
       "       [-0.44453601, -0.14435704,  1.66393156,  0.20783226, -0.98771392],\n",
       "       [-0.5495292 ,  1.04557194,  0.3290994 , -0.88037861, -0.90458174],\n",
       "       [ 0.62239578,  0.86773606,  1.06362892, -0.5797516 ,  1.70450219],\n",
       "       [ 2.03737859,  0.76657862,  0.7545098 ,  0.24860663,  1.70465695],\n",
       "       [-1.03120905, -0.7677685 ,  0.0127918 ,  1.45493108, -0.27143539]])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取刨除了行列索引以后的纯数据部分\n",
    "data.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "1aec6cc9-1012-4e68-aa16-9e36f432f4f8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['股票1', '股票2', '股票3', '股票4', '股票5', '股票6', '股票7', '股票8', '股票9', '股票10'], dtype='object')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取行索引\n",
    "data.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "a6589cb0-a7f2-4739-9810-a501a41dc260",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',\n",
       "               '2018-01-05'],\n",
       "              dtype='datetime64[ns]', freq='B')"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取列索引\n",
    "data.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "e90ac69c-2058-4a8e-9fab-12323cb6b1ea",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>股票1</th>\n",
       "      <th>股票2</th>\n",
       "      <th>股票3</th>\n",
       "      <th>股票4</th>\n",
       "      <th>股票5</th>\n",
       "      <th>股票6</th>\n",
       "      <th>股票7</th>\n",
       "      <th>股票8</th>\n",
       "      <th>股票9</th>\n",
       "      <th>股票10</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-01-01</th>\n",
       "      <td>-0.665625</td>\n",
       "      <td>0.943632</td>\n",
       "      <td>1.212520</td>\n",
       "      <td>-0.560880</td>\n",
       "      <td>1.160859</td>\n",
       "      <td>-0.444536</td>\n",
       "      <td>-0.549529</td>\n",
       "      <td>0.622396</td>\n",
       "      <td>2.037379</td>\n",
       "      <td>-1.031209</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-01-02</th>\n",
       "      <td>-0.482176</td>\n",
       "      <td>-0.907275</td>\n",
       "      <td>0.154059</td>\n",
       "      <td>1.044260</td>\n",
       "      <td>-0.564652</td>\n",
       "      <td>-0.144357</td>\n",
       "      <td>1.045572</td>\n",
       "      <td>0.867736</td>\n",
       "      <td>0.766579</td>\n",
       "      <td>-0.767769</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-01-03</th>\n",
       "      <td>0.580389</td>\n",
       "      <td>1.894359</td>\n",
       "      <td>-0.563138</td>\n",
       "      <td>-0.248059</td>\n",
       "      <td>0.434577</td>\n",
       "      <td>1.663932</td>\n",
       "      <td>0.329099</td>\n",
       "      <td>1.063629</td>\n",
       "      <td>0.754510</td>\n",
       "      <td>0.012792</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-01-04</th>\n",
       "      <td>-0.582405</td>\n",
       "      <td>0.693862</td>\n",
       "      <td>0.509402</td>\n",
       "      <td>0.987477</td>\n",
       "      <td>1.005841</td>\n",
       "      <td>0.207832</td>\n",
       "      <td>-0.880379</td>\n",
       "      <td>-0.579752</td>\n",
       "      <td>0.248607</td>\n",
       "      <td>1.454931</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-01-05</th>\n",
       "      <td>-1.152036</td>\n",
       "      <td>-1.098197</td>\n",
       "      <td>-1.482296</td>\n",
       "      <td>-0.506586</td>\n",
       "      <td>-1.169837</td>\n",
       "      <td>-0.987714</td>\n",
       "      <td>-0.904582</td>\n",
       "      <td>1.704502</td>\n",
       "      <td>1.704657</td>\n",
       "      <td>-0.271435</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 股票1       股票2       股票3       股票4       股票5       股票6  \\\n",
       "2018-01-01 -0.665625  0.943632  1.212520 -0.560880  1.160859 -0.444536   \n",
       "2018-01-02 -0.482176 -0.907275  0.154059  1.044260 -0.564652 -0.144357   \n",
       "2018-01-03  0.580389  1.894359 -0.563138 -0.248059  0.434577  1.663932   \n",
       "2018-01-04 -0.582405  0.693862  0.509402  0.987477  1.005841  0.207832   \n",
       "2018-01-05 -1.152036 -1.098197 -1.482296 -0.506586 -1.169837 -0.987714   \n",
       "\n",
       "                 股票7       股票8       股票9      股票10  \n",
       "2018-01-01 -0.549529  0.622396  2.037379 -1.031209  \n",
       "2018-01-02  1.045572  0.867736  0.766579 -0.767769  \n",
       "2018-01-03  0.329099  1.063629  0.754510  0.012792  \n",
       "2018-01-04 -0.880379 -0.579752  0.248607  1.454931  \n",
       "2018-01-05 -0.904582  1.704502  1.704657 -0.271435  "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 数据转置\n",
    "data.T"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a09e14ce-96a6-44e4-b0a2-c0a460d30c38",
   "metadata": {},
   "source": [
    "#### DataFrame的方法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "2ca50817-080f-4c8c-a8a3-67c1eee37059",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2018-01-01</th>\n",
       "      <th>2018-01-02</th>\n",
       "      <th>2018-01-03</th>\n",
       "      <th>2018-01-04</th>\n",
       "      <th>2018-01-05</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票1</th>\n",
       "      <td>-0.665625</td>\n",
       "      <td>-0.482176</td>\n",
       "      <td>0.580389</td>\n",
       "      <td>-0.582405</td>\n",
       "      <td>-1.152036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>0.943632</td>\n",
       "      <td>-0.907275</td>\n",
       "      <td>1.894359</td>\n",
       "      <td>0.693862</td>\n",
       "      <td>-1.098197</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>1.212520</td>\n",
       "      <td>0.154059</td>\n",
       "      <td>-0.563138</td>\n",
       "      <td>0.509402</td>\n",
       "      <td>-1.482296</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     2018-01-01  2018-01-02  2018-01-03  2018-01-04  2018-01-05\n",
       "股票1   -0.665625   -0.482176    0.580389   -0.582405   -1.152036\n",
       "股票2    0.943632   -0.907275    1.894359    0.693862   -1.098197\n",
       "股票3    1.212520    0.154059   -0.563138    0.509402   -1.482296"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 返回指定的前几行数据（如果不指定，默认返回前5行）\n",
    "data.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "ce8bf109-cfba-4a6b-946c-13c5c5949e17",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2018-01-01</th>\n",
       "      <th>2018-01-02</th>\n",
       "      <th>2018-01-03</th>\n",
       "      <th>2018-01-04</th>\n",
       "      <th>2018-01-05</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票1</th>\n",
       "      <td>-0.665625</td>\n",
       "      <td>-0.482176</td>\n",
       "      <td>0.580389</td>\n",
       "      <td>-0.582405</td>\n",
       "      <td>-1.152036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>0.943632</td>\n",
       "      <td>-0.907275</td>\n",
       "      <td>1.894359</td>\n",
       "      <td>0.693862</td>\n",
       "      <td>-1.098197</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>1.212520</td>\n",
       "      <td>0.154059</td>\n",
       "      <td>-0.563138</td>\n",
       "      <td>0.509402</td>\n",
       "      <td>-1.482296</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>-0.560880</td>\n",
       "      <td>1.044260</td>\n",
       "      <td>-0.248059</td>\n",
       "      <td>0.987477</td>\n",
       "      <td>-0.506586</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票5</th>\n",
       "      <td>1.160859</td>\n",
       "      <td>-0.564652</td>\n",
       "      <td>0.434577</td>\n",
       "      <td>1.005841</td>\n",
       "      <td>-1.169837</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     2018-01-01  2018-01-02  2018-01-03  2018-01-04  2018-01-05\n",
       "股票1   -0.665625   -0.482176    0.580389   -0.582405   -1.152036\n",
       "股票2    0.943632   -0.907275    1.894359    0.693862   -1.098197\n",
       "股票3    1.212520    0.154059   -0.563138    0.509402   -1.482296\n",
       "股票4   -0.560880    1.044260   -0.248059    0.987477   -0.506586\n",
       "股票5    1.160859   -0.564652    0.434577    1.005841   -1.169837"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "c2c0ff2b-fa0d-48ed-a2a9-d538216cb3f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2018-01-01</th>\n",
       "      <th>2018-01-02</th>\n",
       "      <th>2018-01-03</th>\n",
       "      <th>2018-01-04</th>\n",
       "      <th>2018-01-05</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票9</th>\n",
       "      <td>2.037379</td>\n",
       "      <td>0.766579</td>\n",
       "      <td>0.754510</td>\n",
       "      <td>0.248607</td>\n",
       "      <td>1.704657</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票10</th>\n",
       "      <td>-1.031209</td>\n",
       "      <td>-0.767769</td>\n",
       "      <td>0.012792</td>\n",
       "      <td>1.454931</td>\n",
       "      <td>-0.271435</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      2018-01-01  2018-01-02  2018-01-03  2018-01-04  2018-01-05\n",
       "股票9     2.037379    0.766579    0.754510    0.248607    1.704657\n",
       "股票10   -1.031209   -0.767769    0.012792    1.454931   -0.271435"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 返回指定的后几行数据（如果不指定，默认返回最后5行）\n",
    "data.tail(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "ed0d702c-fcac-473b-88d4-de4f34490c2a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2018-01-01</th>\n",
       "      <th>2018-01-02</th>\n",
       "      <th>2018-01-03</th>\n",
       "      <th>2018-01-04</th>\n",
       "      <th>2018-01-05</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票6</th>\n",
       "      <td>-0.444536</td>\n",
       "      <td>-0.144357</td>\n",
       "      <td>1.663932</td>\n",
       "      <td>0.207832</td>\n",
       "      <td>-0.987714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票7</th>\n",
       "      <td>-0.549529</td>\n",
       "      <td>1.045572</td>\n",
       "      <td>0.329099</td>\n",
       "      <td>-0.880379</td>\n",
       "      <td>-0.904582</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票8</th>\n",
       "      <td>0.622396</td>\n",
       "      <td>0.867736</td>\n",
       "      <td>1.063629</td>\n",
       "      <td>-0.579752</td>\n",
       "      <td>1.704502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票9</th>\n",
       "      <td>2.037379</td>\n",
       "      <td>0.766579</td>\n",
       "      <td>0.754510</td>\n",
       "      <td>0.248607</td>\n",
       "      <td>1.704657</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票10</th>\n",
       "      <td>-1.031209</td>\n",
       "      <td>-0.767769</td>\n",
       "      <td>0.012792</td>\n",
       "      <td>1.454931</td>\n",
       "      <td>-0.271435</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      2018-01-01  2018-01-02  2018-01-03  2018-01-04  2018-01-05\n",
       "股票6    -0.444536   -0.144357    1.663932    0.207832   -0.987714\n",
       "股票7    -0.549529    1.045572    0.329099   -0.880379   -0.904582\n",
       "股票8     0.622396    0.867736    1.063629   -0.579752    1.704502\n",
       "股票9     2.037379    0.766579    0.754510    0.248607    1.704657\n",
       "股票10   -1.031209   -0.767769    0.012792    1.454931   -0.271435"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.tail()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9fbc7ed0-4eff-494b-8733-6a01c6763e7b",
   "metadata": {},
   "source": [
    "#### 修改行列索引值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "1c8fb5ba-626f-4817-adb6-dd5410c579e6",
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "Index does not support mutable operations",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[20], line 2\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[38;5;66;03m# 修改某行的索引值是不被允许的，只能整体修改后重新覆盖\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[43mdata\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mindex\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m]\u001b[49m \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m股票B\u001b[39m\u001b[38;5;124m\"\u001b[39m\n",
      "File \u001b[1;32m~\\.conda\\envs\\ai\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:5371\u001b[0m, in \u001b[0;36mIndex.__setitem__\u001b[1;34m(self, key, value)\u001b[0m\n\u001b[0;32m   5369\u001b[0m \u001b[38;5;129m@final\u001b[39m\n\u001b[0;32m   5370\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m__setitem__\u001b[39m(\u001b[38;5;28mself\u001b[39m, key, value) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m-> 5371\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIndex does not support mutable operations\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
      "\u001b[1;31mTypeError\u001b[0m: Index does not support mutable operations"
     ]
    }
   ],
   "source": [
    "# 修改某行的索引值是不被允许的，只能整体修改后重新覆盖\n",
    "data.index[2] = \"股票B\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "006201a2-0c77-4a6d-baac-f2925c856403",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 重新构建行索引\n",
    "stok_ = [\"股票_{}\".format(i) for i in range(1, 11)]\n",
    "stok_[1] = \"股票B\"\n",
    "stok_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e59b0dfc-fa00-43b5-abcf-6984c9b62790",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 重新赋值给DataFrame\n",
    "data.index = stok_\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0d111714-f138-4d26-bc9e-9d176481cbd4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 重设索引的方法也可以实现索引修改（如果不传参数，将会把原来的行索引变成数据内容）\n",
    "data.reset_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3b7ef1ee-3084-4d3d-b3e4-1758aa982816",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 如果传入drop=True参数，怎会删除原来的航索引\n",
    "data.reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "525e1582-e013-47d5-b734-c11d9130625f",
   "metadata": {},
   "source": [
    "#### 设置新的列索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a1c5fe16-017e-4a15-a307-a26ae6aea3f8",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 在创建时就指定好列索引\n",
    "df = pd.DataFrame({\n",
    "    'month': [1, 4, 7, 10],\n",
    "    'year': [2012, 2014, 2013, 2014],\n",
    "    'sale': [55, 40, 84, 31]\n",
    "})\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1b65680c-6ac5-47fc-8923-239c7cd6f960",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将月份设置为新的索引，第二个参数默认可以不传，不传时，month列直接变为索引，数据中不再包含month列\n",
    "new_data = df.set_index(\"month\")\n",
    "new_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a25653f4-d9a3-4cfc-a687-c1736ffd3931",
   "metadata": {},
   "outputs": [],
   "source": [
    "new_data.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2adb730b-b0ea-413e-8144-b840b9bfb9ae",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将月份设置为新的索引，第二个参数传False，会把month复制一份成为索引，数据中还包括month\n",
    "new_data2 = df.set_index(\"month\", drop=False)\n",
    "new_data2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "23804582-64e2-44e4-aa03-a344f56e4c5e",
   "metadata": {},
   "outputs": [],
   "source": [
    "new_data2.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b4dc5be1-3f8d-4c5e-9d67-e4021314de21",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 设置多个索引，以年和余额\n",
    "new_df = df.set_index([\"year\", \"month\"])\n",
    "new_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bc763afb-6fd0-4f9d-9479-4990c4b1136b",
   "metadata": {},
   "outputs": [],
   "source": [
    "new_df.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0faa4cf0-b43e-42f2-9897-5633fa461cd9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 查看索引的名字\n",
    "new_df.index.names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b9a26aa7-e8e0-4dde-8090-2877fc8af08b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 查看每一个索引的值列表\n",
    "new_df.index.levels"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e223ac65-236a-46e6-9921-ba9e1c79bd07",
   "metadata": {},
   "source": [
    "#### Panel（已废弃）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ae4c1f97-2454-4f06-8354-8588e58e786a",
   "metadata": {},
   "outputs": [],
   "source": [
    "p = pd.Panel(np.arange(24).reshape(4,3,2),\n",
    "                 items=list('ABCD'),\n",
    "                 major_axis=pd.date_range('20130101', periods=3),\n",
    "                 minor_axis=['first', 'second'])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "583b8379-9758-487c-ba29-01accfe05531",
   "metadata": {},
   "source": [
    "#### Series（带索引的一维数组，Series结构只有行索引）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b0faa21d-f5c6-4b20-b994-ddc720989e35",
   "metadata": {},
   "outputs": [],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "54a584cb-3ec1-4958-bd7a-417ad0b8e4f6",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 获取股票B的数据（从二维表中抽取第二行数据），即带索引一维数组\n",
    "sr = data.iloc[1,:]\n",
    "sr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ba8dd190-7668-4d6c-97a8-800ead5355c2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 获取Series的索引\n",
    "sr.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "70f32464-f3b9-4f3f-b1e3-859e4e10bfcd",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 获取Series的值列表（ndarray的一维数组）\n",
    "sr.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "df6b2a34-48b9-4d25-9c97-e4358fb6dfae",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'sr' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[21], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28mtype\u001b[39m(\u001b[43msr\u001b[49m\u001b[38;5;241m.\u001b[39mvalues)\n",
      "\u001b[1;31mNameError\u001b[0m: name 'sr' is not defined"
     ]
    }
   ],
   "source": [
    "type(sr.values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "322c3f64-3abc-4949-8ea1-2ef4336def45",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    3\n",
       "1    5\n",
       "2    7\n",
       "dtype: int64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 创建Series（默认索引是从0开始的整数），创建结果的左边是index，右边是value\n",
    "pd.Series(np.arange(3, 9, 2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "98b91d5e-026f-4760-b968-eec71fd84ad5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "a    3\n",
       "b    5\n",
       "c    7\n",
       "dtype: int64"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 创建指定索引的Series\n",
    "pd.Series(np.arange(3, 9, 2), index=[\"a\", \"b\", \"c\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "661dd663-097c-4200-a4f7-b1c923775acb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "red        100\n",
       "blue       200\n",
       "green      500\n",
       "yellow    1000\n",
       "dtype: int64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 通过字典创建Series（key作为索引，值作为value）\n",
    "pd.Series({'red': 100, 'blue': 200, 'green': 500, 'yellow': 1000})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "13588bc3-1574-4b86-9057-a658484f0213",
   "metadata": {},
   "source": [
    "- 总结：DataFrame是Series的容器"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a745ea85-936c-4492-8923-e965653be76c",
   "metadata": {},
   "source": [
    "## 4.2 基本数据操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "0e213af1-a82e-46ed-b478-70e8b7586d24",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>ma5</th>\n",
       "      <th>ma10</th>\n",
       "      <th>ma20</th>\n",
       "      <th>v_ma5</th>\n",
       "      <th>v_ma10</th>\n",
       "      <th>v_ma20</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>23.53</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>22.942</td>\n",
       "      <td>22.142</td>\n",
       "      <td>22.875</td>\n",
       "      <td>53782.64</td>\n",
       "      <td>46738.65</td>\n",
       "      <td>55576.11</td>\n",
       "      <td>2.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>22.80</td>\n",
       "      <td>23.78</td>\n",
       "      <td>23.53</td>\n",
       "      <td>22.80</td>\n",
       "      <td>60985.11</td>\n",
       "      <td>0.69</td>\n",
       "      <td>3.02</td>\n",
       "      <td>22.406</td>\n",
       "      <td>21.955</td>\n",
       "      <td>22.942</td>\n",
       "      <td>40827.52</td>\n",
       "      <td>42736.34</td>\n",
       "      <td>56007.50</td>\n",
       "      <td>1.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>22.88</td>\n",
       "      <td>23.37</td>\n",
       "      <td>22.82</td>\n",
       "      <td>22.71</td>\n",
       "      <td>52914.01</td>\n",
       "      <td>0.54</td>\n",
       "      <td>2.42</td>\n",
       "      <td>21.938</td>\n",
       "      <td>21.929</td>\n",
       "      <td>23.022</td>\n",
       "      <td>35119.58</td>\n",
       "      <td>41871.97</td>\n",
       "      <td>56372.85</td>\n",
       "      <td>1.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>22.25</td>\n",
       "      <td>22.76</td>\n",
       "      <td>22.28</td>\n",
       "      <td>22.02</td>\n",
       "      <td>36105.01</td>\n",
       "      <td>0.36</td>\n",
       "      <td>1.64</td>\n",
       "      <td>21.446</td>\n",
       "      <td>21.909</td>\n",
       "      <td>23.137</td>\n",
       "      <td>35397.58</td>\n",
       "      <td>39904.78</td>\n",
       "      <td>60149.60</td>\n",
       "      <td>0.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>21.49</td>\n",
       "      <td>21.99</td>\n",
       "      <td>21.92</td>\n",
       "      <td>21.48</td>\n",
       "      <td>23331.04</td>\n",
       "      <td>0.44</td>\n",
       "      <td>2.05</td>\n",
       "      <td>21.366</td>\n",
       "      <td>21.923</td>\n",
       "      <td>23.253</td>\n",
       "      <td>33590.21</td>\n",
       "      <td>42935.74</td>\n",
       "      <td>61716.11</td>\n",
       "      <td>0.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>13.17</td>\n",
       "      <td>14.48</td>\n",
       "      <td>14.28</td>\n",
       "      <td>13.13</td>\n",
       "      <td>179831.72</td>\n",
       "      <td>1.12</td>\n",
       "      <td>8.51</td>\n",
       "      <td>13.112</td>\n",
       "      <td>13.112</td>\n",
       "      <td>13.112</td>\n",
       "      <td>115090.18</td>\n",
       "      <td>115090.18</td>\n",
       "      <td>115090.18</td>\n",
       "      <td>6.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>12.88</td>\n",
       "      <td>13.45</td>\n",
       "      <td>13.16</td>\n",
       "      <td>12.87</td>\n",
       "      <td>93180.39</td>\n",
       "      <td>0.26</td>\n",
       "      <td>2.02</td>\n",
       "      <td>12.820</td>\n",
       "      <td>12.820</td>\n",
       "      <td>12.820</td>\n",
       "      <td>98904.79</td>\n",
       "      <td>98904.79</td>\n",
       "      <td>98904.79</td>\n",
       "      <td>3.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>12.80</td>\n",
       "      <td>12.92</td>\n",
       "      <td>12.90</td>\n",
       "      <td>12.61</td>\n",
       "      <td>67075.44</td>\n",
       "      <td>0.20</td>\n",
       "      <td>1.57</td>\n",
       "      <td>12.707</td>\n",
       "      <td>12.707</td>\n",
       "      <td>12.707</td>\n",
       "      <td>100812.93</td>\n",
       "      <td>100812.93</td>\n",
       "      <td>100812.93</td>\n",
       "      <td>2.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>12.52</td>\n",
       "      <td>13.06</td>\n",
       "      <td>12.70</td>\n",
       "      <td>12.52</td>\n",
       "      <td>139071.61</td>\n",
       "      <td>0.18</td>\n",
       "      <td>1.44</td>\n",
       "      <td>12.610</td>\n",
       "      <td>12.610</td>\n",
       "      <td>12.610</td>\n",
       "      <td>117681.67</td>\n",
       "      <td>117681.67</td>\n",
       "      <td>117681.67</td>\n",
       "      <td>4.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>12.25</td>\n",
       "      <td>12.67</td>\n",
       "      <td>12.52</td>\n",
       "      <td>12.20</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>0.32</td>\n",
       "      <td>2.62</td>\n",
       "      <td>12.520</td>\n",
       "      <td>12.520</td>\n",
       "      <td>12.520</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 14 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27  23.53  25.88  24.16  23.53   95578.03          0.63      2.68   \n",
       "2018-02-26  22.80  23.78  23.53  22.80   60985.11          0.69      3.02   \n",
       "2018-02-23  22.88  23.37  22.82  22.71   52914.01          0.54      2.42   \n",
       "2018-02-22  22.25  22.76  22.28  22.02   36105.01          0.36      1.64   \n",
       "2018-02-14  21.49  21.99  21.92  21.48   23331.04          0.44      2.05   \n",
       "...           ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-06  13.17  14.48  14.28  13.13  179831.72          1.12      8.51   \n",
       "2015-03-05  12.88  13.45  13.16  12.87   93180.39          0.26      2.02   \n",
       "2015-03-04  12.80  12.92  12.90  12.61   67075.44          0.20      1.57   \n",
       "2015-03-03  12.52  13.06  12.70  12.52  139071.61          0.18      1.44   \n",
       "2015-03-02  12.25  12.67  12.52  12.20   96291.73          0.32      2.62   \n",
       "\n",
       "               ma5    ma10    ma20      v_ma5     v_ma10     v_ma20  turnover  \n",
       "2018-02-27  22.942  22.142  22.875   53782.64   46738.65   55576.11      2.39  \n",
       "2018-02-26  22.406  21.955  22.942   40827.52   42736.34   56007.50      1.53  \n",
       "2018-02-23  21.938  21.929  23.022   35119.58   41871.97   56372.85      1.32  \n",
       "2018-02-22  21.446  21.909  23.137   35397.58   39904.78   60149.60      0.90  \n",
       "2018-02-14  21.366  21.923  23.253   33590.21   42935.74   61716.11      0.58  \n",
       "...            ...     ...     ...        ...        ...        ...       ...  \n",
       "2015-03-06  13.112  13.112  13.112  115090.18  115090.18  115090.18      6.16  \n",
       "2015-03-05  12.820  12.820  12.820   98904.79   98904.79   98904.79      3.19  \n",
       "2015-03-04  12.707  12.707  12.707  100812.93  100812.93  100812.93      2.30  \n",
       "2015-03-03  12.610  12.610  12.610  117681.67  117681.67  117681.67      4.76  \n",
       "2015-03-02  12.520  12.520  12.520   96291.73   96291.73   96291.73      3.30  \n",
       "\n",
       "[643 rows x 14 columns]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 从csv文件读取数据\n",
    "data = pd.read_csv(\"./stock_day/stock_day.csv\")\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "987cc82b-37a4-429f-a1aa-6f23e4e6e6aa",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 删除一些列，让数据简单点，再去做后面的操作\n",
    "data = data.drop([\"ma5\",\"ma10\",\"ma20\",\"v_ma5\",\"v_ma10\",\"v_ma20\"], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "31c9f729-a766-4997-b8e8-fdaa55c6b8e8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>23.53</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>22.80</td>\n",
       "      <td>23.78</td>\n",
       "      <td>23.53</td>\n",
       "      <td>22.80</td>\n",
       "      <td>60985.11</td>\n",
       "      <td>0.69</td>\n",
       "      <td>3.02</td>\n",
       "      <td>1.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>22.88</td>\n",
       "      <td>23.37</td>\n",
       "      <td>22.82</td>\n",
       "      <td>22.71</td>\n",
       "      <td>52914.01</td>\n",
       "      <td>0.54</td>\n",
       "      <td>2.42</td>\n",
       "      <td>1.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>22.25</td>\n",
       "      <td>22.76</td>\n",
       "      <td>22.28</td>\n",
       "      <td>22.02</td>\n",
       "      <td>36105.01</td>\n",
       "      <td>0.36</td>\n",
       "      <td>1.64</td>\n",
       "      <td>0.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>21.49</td>\n",
       "      <td>21.99</td>\n",
       "      <td>21.92</td>\n",
       "      <td>21.48</td>\n",
       "      <td>23331.04</td>\n",
       "      <td>0.44</td>\n",
       "      <td>2.05</td>\n",
       "      <td>0.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>13.17</td>\n",
       "      <td>14.48</td>\n",
       "      <td>14.28</td>\n",
       "      <td>13.13</td>\n",
       "      <td>179831.72</td>\n",
       "      <td>1.12</td>\n",
       "      <td>8.51</td>\n",
       "      <td>6.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>12.88</td>\n",
       "      <td>13.45</td>\n",
       "      <td>13.16</td>\n",
       "      <td>12.87</td>\n",
       "      <td>93180.39</td>\n",
       "      <td>0.26</td>\n",
       "      <td>2.02</td>\n",
       "      <td>3.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>12.80</td>\n",
       "      <td>12.92</td>\n",
       "      <td>12.90</td>\n",
       "      <td>12.61</td>\n",
       "      <td>67075.44</td>\n",
       "      <td>0.20</td>\n",
       "      <td>1.57</td>\n",
       "      <td>2.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>12.52</td>\n",
       "      <td>13.06</td>\n",
       "      <td>12.70</td>\n",
       "      <td>12.52</td>\n",
       "      <td>139071.61</td>\n",
       "      <td>0.18</td>\n",
       "      <td>1.44</td>\n",
       "      <td>4.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>12.25</td>\n",
       "      <td>12.67</td>\n",
       "      <td>12.52</td>\n",
       "      <td>12.20</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>0.32</td>\n",
       "      <td>2.62</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27  23.53  25.88  24.16  23.53   95578.03          0.63      2.68   \n",
       "2018-02-26  22.80  23.78  23.53  22.80   60985.11          0.69      3.02   \n",
       "2018-02-23  22.88  23.37  22.82  22.71   52914.01          0.54      2.42   \n",
       "2018-02-22  22.25  22.76  22.28  22.02   36105.01          0.36      1.64   \n",
       "2018-02-14  21.49  21.99  21.92  21.48   23331.04          0.44      2.05   \n",
       "...           ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-06  13.17  14.48  14.28  13.13  179831.72          1.12      8.51   \n",
       "2015-03-05  12.88  13.45  13.16  12.87   93180.39          0.26      2.02   \n",
       "2015-03-04  12.80  12.92  12.90  12.61   67075.44          0.20      1.57   \n",
       "2015-03-03  12.52  13.06  12.70  12.52  139071.61          0.18      1.44   \n",
       "2015-03-02  12.25  12.67  12.52  12.20   96291.73          0.32      2.62   \n",
       "\n",
       "            turnover  \n",
       "2018-02-27      2.39  \n",
       "2018-02-26      1.53  \n",
       "2018-02-23      1.32  \n",
       "2018-02-22      0.90  \n",
       "2018-02-14      0.58  \n",
       "...              ...  \n",
       "2015-03-06      6.16  \n",
       "2015-03-05      3.19  \n",
       "2015-03-04      2.30  \n",
       "2015-03-03      4.76  \n",
       "2015-03-02      3.30  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "26c2b178-14c8-4e0a-b5e5-2453d055a459",
   "metadata": {},
   "source": [
    "### 4.2.1 索引操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "836d9b03-fe74-475e-bf08-9fed07abe955",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(-0.9072751004275416)"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 回顾numpy中通过索引获取值的方法\n",
    "stock_change[1, 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "e330a856-660b-4787-b2da-1cf3dac20a49",
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyError",
     "evalue": "(1, 0)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "File \u001b[1;32m~\\.conda\\envs\\ai\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3805\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m   3804\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 3805\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcasted_key\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   3806\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n",
      "File \u001b[1;32mindex.pyx:167\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
      "File \u001b[1;32mindex.pyx:196\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
      "File \u001b[1;32mpandas\\\\_libs\\\\hashtable_class_helper.pxi:7081\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
      "File \u001b[1;32mpandas\\\\_libs\\\\hashtable_class_helper.pxi:7089\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;31mKeyError\u001b[0m: (1, 0)",
      "\nThe above exception was the direct cause of the following exception:\n",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[29], line 2\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[38;5;66;03m# 在pandas中，不能直接通过下标的方式获取值\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[43mdata\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\n",
      "File \u001b[1;32m~\\.conda\\envs\\ai\\Lib\\site-packages\\pandas\\core\\frame.py:4102\u001b[0m, in \u001b[0;36mDataFrame.__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m   4100\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcolumns\u001b[38;5;241m.\u001b[39mnlevels \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[0;32m   4101\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_multilevel(key)\n\u001b[1;32m-> 4102\u001b[0m indexer \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcolumns\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   4103\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m is_integer(indexer):\n\u001b[0;32m   4104\u001b[0m     indexer \u001b[38;5;241m=\u001b[39m [indexer]\n",
      "File \u001b[1;32m~\\.conda\\envs\\ai\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3812\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m   3807\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(casted_key, \u001b[38;5;28mslice\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m (\n\u001b[0;32m   3808\u001b[0m         \u001b[38;5;28misinstance\u001b[39m(casted_key, abc\u001b[38;5;241m.\u001b[39mIterable)\n\u001b[0;32m   3809\u001b[0m         \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28many\u001b[39m(\u001b[38;5;28misinstance\u001b[39m(x, \u001b[38;5;28mslice\u001b[39m) \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m casted_key)\n\u001b[0;32m   3810\u001b[0m     ):\n\u001b[0;32m   3811\u001b[0m         \u001b[38;5;28;01mraise\u001b[39;00m InvalidIndexError(key)\n\u001b[1;32m-> 3812\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01merr\u001b[39;00m\n\u001b[0;32m   3813\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[0;32m   3814\u001b[0m     \u001b[38;5;66;03m# If we have a listlike key, _check_indexing_error will raise\u001b[39;00m\n\u001b[0;32m   3815\u001b[0m     \u001b[38;5;66;03m#  InvalidIndexError. Otherwise we fall through and re-raise\u001b[39;00m\n\u001b[0;32m   3816\u001b[0m     \u001b[38;5;66;03m#  the TypeError.\u001b[39;00m\n\u001b[0;32m   3817\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_indexing_error(key)\n",
      "\u001b[1;31mKeyError\u001b[0m: (1, 0)"
     ]
    }
   ],
   "source": [
    "# 在pandas中，不能直接通过下标的方式获取值\n",
    "data[1, 0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6655dde5-2bd0-4a4c-9e1e-9a8d005bb5b7",
   "metadata": {},
   "source": [
    "#### 直接索引（必须是先列后行）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3f4e6404-4b2b-4ba3-9bbd-45859b0165bc",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6366bf87-4b41-4749-9e2d-a91b455c0195",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 想要获取2018年2月26日的开盘价，必须要先按列索引(open)，再按行索引(2018-02-26)\n",
    "data[\"open\"][\"2018-02-06\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fbbfae61-0527-4269-8a00-b8c4f7a81cbf",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 若按先行后列，则会报错\n",
    "data[\"2018-02-06\"][\"open\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a1f89694-2932-47df-a7a8-b60b99c7d36b",
   "metadata": {},
   "source": [
    "#### 按名字进行索引（loc）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c2fe8b36-ecd9-4817-8ac7-179db8c6f34d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 如果想先行后列，就必须使用按名字索引（loc）\n",
    "data.loc['2018-02-26']['open']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6594c483-c80f-47a0-adaf-a03ffc8aa855",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用英文逗号分割索引名字也是可以的\n",
    "data.loc['2018-02-26', 'open']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3a92ac5e-b8eb-468d-be42-fbef22d27259",
   "metadata": {},
   "source": [
    "#### 按数字索引（iloc），先行后列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "9dedbbe1-d5d0-445c-8b41-67e3e0d32505",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(22.8)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 按数据的数字下标进行索引\n",
    "data.iloc[1, 0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b2f37b1a-99be-4539-8c75-9205a082f038",
   "metadata": {},
   "source": [
    "#### ix组合索引（同时使用下标和名字）（已废弃，可以使用loc和iloc替换）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "978a8cb9-423e-4e8a-822e-886efddb7abf",
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'DataFrame' object has no attribute 'ix'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[31], line 2\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[38;5;66;03m# 获取行数据，第一天到第四天，每天的['open', 'close', 'high', 'low']这四个指标的数据\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[43mdata\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mix\u001b[49m[:\u001b[38;5;241m4\u001b[39m, [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mopen\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mclose\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhigh\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlow\u001b[39m\u001b[38;5;124m'\u001b[39m]]\n",
      "File \u001b[1;32m~\\.conda\\envs\\ai\\Lib\\site-packages\\pandas\\core\\generic.py:6299\u001b[0m, in \u001b[0;36mNDFrame.__getattr__\u001b[1;34m(self, name)\u001b[0m\n\u001b[0;32m   6292\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\n\u001b[0;32m   6293\u001b[0m     name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_internal_names_set\n\u001b[0;32m   6294\u001b[0m     \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_metadata\n\u001b[0;32m   6295\u001b[0m     \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_accessors\n\u001b[0;32m   6296\u001b[0m     \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_info_axis\u001b[38;5;241m.\u001b[39m_can_hold_identifiers_and_holds_name(name)\n\u001b[0;32m   6297\u001b[0m ):\n\u001b[0;32m   6298\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m[name]\n\u001b[1;32m-> 6299\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mobject\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__getattribute__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mname\u001b[49m\u001b[43m)\u001b[49m\n",
      "\u001b[1;31mAttributeError\u001b[0m: 'DataFrame' object has no attribute 'ix'"
     ]
    }
   ],
   "source": [
    "# 获取行数据，第一天到第四天，每天的['open', 'close', 'high', 'low']这四个指标的数据\n",
    "data.ix[:4, ['open', 'close', 'high', 'low']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "330a6b3b-8abf-4123-ad90-003284e511e8",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ba1d8233-1430-4a4b-8a38-a8016b1b164b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用loc达到相同的效果\n",
    "data.loc[data.index[0:4], ['open', 'close', 'high', 'low']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fef3a246-f4e0-426e-a162-6c6f2aea0940",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bef3e929-2f20-450c-8926-484578a75b37",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用iloc达到相同的效果\n",
    "data.iloc[0:4, data.columns.get_indexer(['open', 'close', 'high', 'low'])]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e499a54a-2ddf-495e-b217-2adf4501f84d",
   "metadata": {},
   "source": [
    "### 4.2.2 赋值操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "52a97326-dfae-4a96-b6f1-fcd280dd7a02",
   "metadata": {},
   "outputs": [],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3b02fd4a-4c47-4fbf-9947-af3a654c0e3d",
   "metadata": {},
   "outputs": [],
   "source": [
    "data['open']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "f3b717d9-d665-498c-8b2c-7fd7a72e5ebe",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2018-02-27    23.53\n",
       "2018-02-26    22.80\n",
       "2018-02-23    22.88\n",
       "2018-02-22    22.25\n",
       "2018-02-14    21.49\n",
       "              ...  \n",
       "2015-03-06    13.17\n",
       "2015-03-05    12.88\n",
       "2015-03-04    12.80\n",
       "2015-03-03    12.52\n",
       "2015-03-02    12.25\n",
       "Name: open, Length: 643, dtype: float64"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.open"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "495894fb-8398-43b8-a6c0-0f5fffcac5f9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将某一列修改为一个统一的值\n",
    "data.open = 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "05a68c7a-d0da-4169-a2b3-00beba6de390",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>100</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>100</td>\n",
       "      <td>23.78</td>\n",
       "      <td>23.53</td>\n",
       "      <td>22.80</td>\n",
       "      <td>60985.11</td>\n",
       "      <td>0.69</td>\n",
       "      <td>3.02</td>\n",
       "      <td>1.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>100</td>\n",
       "      <td>23.37</td>\n",
       "      <td>22.82</td>\n",
       "      <td>22.71</td>\n",
       "      <td>52914.01</td>\n",
       "      <td>0.54</td>\n",
       "      <td>2.42</td>\n",
       "      <td>1.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>100</td>\n",
       "      <td>22.76</td>\n",
       "      <td>22.28</td>\n",
       "      <td>22.02</td>\n",
       "      <td>36105.01</td>\n",
       "      <td>0.36</td>\n",
       "      <td>1.64</td>\n",
       "      <td>0.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>100</td>\n",
       "      <td>21.99</td>\n",
       "      <td>21.92</td>\n",
       "      <td>21.48</td>\n",
       "      <td>23331.04</td>\n",
       "      <td>0.44</td>\n",
       "      <td>2.05</td>\n",
       "      <td>0.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>100</td>\n",
       "      <td>14.48</td>\n",
       "      <td>14.28</td>\n",
       "      <td>13.13</td>\n",
       "      <td>179831.72</td>\n",
       "      <td>1.12</td>\n",
       "      <td>8.51</td>\n",
       "      <td>6.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>100</td>\n",
       "      <td>13.45</td>\n",
       "      <td>13.16</td>\n",
       "      <td>12.87</td>\n",
       "      <td>93180.39</td>\n",
       "      <td>0.26</td>\n",
       "      <td>2.02</td>\n",
       "      <td>3.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>100</td>\n",
       "      <td>12.92</td>\n",
       "      <td>12.90</td>\n",
       "      <td>12.61</td>\n",
       "      <td>67075.44</td>\n",
       "      <td>0.20</td>\n",
       "      <td>1.57</td>\n",
       "      <td>2.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>100</td>\n",
       "      <td>13.06</td>\n",
       "      <td>12.70</td>\n",
       "      <td>12.52</td>\n",
       "      <td>139071.61</td>\n",
       "      <td>0.18</td>\n",
       "      <td>1.44</td>\n",
       "      <td>4.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>100</td>\n",
       "      <td>12.67</td>\n",
       "      <td>12.52</td>\n",
       "      <td>12.20</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>0.32</td>\n",
       "      <td>2.62</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27   100  25.88  24.16  23.53   95578.03          0.63      2.68   \n",
       "2018-02-26   100  23.78  23.53  22.80   60985.11          0.69      3.02   \n",
       "2018-02-23   100  23.37  22.82  22.71   52914.01          0.54      2.42   \n",
       "2018-02-22   100  22.76  22.28  22.02   36105.01          0.36      1.64   \n",
       "2018-02-14   100  21.99  21.92  21.48   23331.04          0.44      2.05   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-06   100  14.48  14.28  13.13  179831.72          1.12      8.51   \n",
       "2015-03-05   100  13.45  13.16  12.87   93180.39          0.26      2.02   \n",
       "2015-03-04   100  12.92  12.90  12.61   67075.44          0.20      1.57   \n",
       "2015-03-03   100  13.06  12.70  12.52  139071.61          0.18      1.44   \n",
       "2015-03-02   100  12.67  12.52  12.20   96291.73          0.32      2.62   \n",
       "\n",
       "            turnover  \n",
       "2018-02-27      2.39  \n",
       "2018-02-26      1.53  \n",
       "2018-02-23      1.32  \n",
       "2018-02-22      0.90  \n",
       "2018-02-14      0.58  \n",
       "...              ...  \n",
       "2015-03-06      6.16  \n",
       "2015-03-05      3.19  \n",
       "2015-03-04      2.30  \n",
       "2015-03-03      4.76  \n",
       "2015-03-02      3.30  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "ac4aca5b-3e26-4fb3-9697-922b6046d2c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>100</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>222</td>\n",
       "      <td>23.78</td>\n",
       "      <td>23.53</td>\n",
       "      <td>22.80</td>\n",
       "      <td>60985.11</td>\n",
       "      <td>0.69</td>\n",
       "      <td>3.02</td>\n",
       "      <td>1.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>100</td>\n",
       "      <td>23.37</td>\n",
       "      <td>22.82</td>\n",
       "      <td>22.71</td>\n",
       "      <td>52914.01</td>\n",
       "      <td>0.54</td>\n",
       "      <td>2.42</td>\n",
       "      <td>1.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>100</td>\n",
       "      <td>22.76</td>\n",
       "      <td>22.28</td>\n",
       "      <td>22.02</td>\n",
       "      <td>36105.01</td>\n",
       "      <td>0.36</td>\n",
       "      <td>1.64</td>\n",
       "      <td>0.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>100</td>\n",
       "      <td>21.99</td>\n",
       "      <td>21.92</td>\n",
       "      <td>21.48</td>\n",
       "      <td>23331.04</td>\n",
       "      <td>0.44</td>\n",
       "      <td>2.05</td>\n",
       "      <td>0.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>100</td>\n",
       "      <td>14.48</td>\n",
       "      <td>14.28</td>\n",
       "      <td>13.13</td>\n",
       "      <td>179831.72</td>\n",
       "      <td>1.12</td>\n",
       "      <td>8.51</td>\n",
       "      <td>6.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>100</td>\n",
       "      <td>13.45</td>\n",
       "      <td>13.16</td>\n",
       "      <td>12.87</td>\n",
       "      <td>93180.39</td>\n",
       "      <td>0.26</td>\n",
       "      <td>2.02</td>\n",
       "      <td>3.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>100</td>\n",
       "      <td>12.92</td>\n",
       "      <td>12.90</td>\n",
       "      <td>12.61</td>\n",
       "      <td>67075.44</td>\n",
       "      <td>0.20</td>\n",
       "      <td>1.57</td>\n",
       "      <td>2.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>100</td>\n",
       "      <td>13.06</td>\n",
       "      <td>12.70</td>\n",
       "      <td>12.52</td>\n",
       "      <td>139071.61</td>\n",
       "      <td>0.18</td>\n",
       "      <td>1.44</td>\n",
       "      <td>4.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>100</td>\n",
       "      <td>12.67</td>\n",
       "      <td>12.52</td>\n",
       "      <td>12.20</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>0.32</td>\n",
       "      <td>2.62</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27   100  25.88  24.16  23.53   95578.03          0.63      2.68   \n",
       "2018-02-26   222  23.78  23.53  22.80   60985.11          0.69      3.02   \n",
       "2018-02-23   100  23.37  22.82  22.71   52914.01          0.54      2.42   \n",
       "2018-02-22   100  22.76  22.28  22.02   36105.01          0.36      1.64   \n",
       "2018-02-14   100  21.99  21.92  21.48   23331.04          0.44      2.05   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-06   100  14.48  14.28  13.13  179831.72          1.12      8.51   \n",
       "2015-03-05   100  13.45  13.16  12.87   93180.39          0.26      2.02   \n",
       "2015-03-04   100  12.92  12.90  12.61   67075.44          0.20      1.57   \n",
       "2015-03-03   100  13.06  12.70  12.52  139071.61          0.18      1.44   \n",
       "2015-03-02   100  12.67  12.52  12.20   96291.73          0.32      2.62   \n",
       "\n",
       "            turnover  \n",
       "2018-02-27      2.39  \n",
       "2018-02-26      1.53  \n",
       "2018-02-23      1.32  \n",
       "2018-02-22      0.90  \n",
       "2018-02-14      0.58  \n",
       "...              ...  \n",
       "2015-03-06      6.16  \n",
       "2015-03-05      3.19  \n",
       "2015-03-04      2.30  \n",
       "2015-03-03      4.76  \n",
       "2015-03-02      3.30  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 修改某一个具体坐标的值\n",
    "data.iloc[1, 0] = 222\n",
    "data"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f324a005-c329-4e09-b035-31df6ceffcf2",
   "metadata": {},
   "source": [
    "### 4.2.3 排序"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d9f43522-4230-429e-904f-2d06c0c58989",
   "metadata": {},
   "source": [
    "#### 对DataFrame进行排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "b6f31fae-7ad4-43bc-8cf5-9d77c1c175a0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>100</td>\n",
       "      <td>12.67</td>\n",
       "      <td>12.52</td>\n",
       "      <td>12.20</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>0.32</td>\n",
       "      <td>2.62</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>100</td>\n",
       "      <td>12.92</td>\n",
       "      <td>12.90</td>\n",
       "      <td>12.61</td>\n",
       "      <td>67075.44</td>\n",
       "      <td>0.20</td>\n",
       "      <td>1.57</td>\n",
       "      <td>2.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>100</td>\n",
       "      <td>13.06</td>\n",
       "      <td>12.70</td>\n",
       "      <td>12.52</td>\n",
       "      <td>139071.61</td>\n",
       "      <td>0.18</td>\n",
       "      <td>1.44</td>\n",
       "      <td>4.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-09-07</th>\n",
       "      <td>100</td>\n",
       "      <td>13.38</td>\n",
       "      <td>12.77</td>\n",
       "      <td>12.63</td>\n",
       "      <td>52490.04</td>\n",
       "      <td>0.37</td>\n",
       "      <td>2.98</td>\n",
       "      <td>1.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>100</td>\n",
       "      <td>13.45</td>\n",
       "      <td>13.16</td>\n",
       "      <td>12.87</td>\n",
       "      <td>93180.39</td>\n",
       "      <td>0.26</td>\n",
       "      <td>2.02</td>\n",
       "      <td>3.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-06-11</th>\n",
       "      <td>100</td>\n",
       "      <td>34.98</td>\n",
       "      <td>34.39</td>\n",
       "      <td>32.51</td>\n",
       "      <td>173075.73</td>\n",
       "      <td>0.54</td>\n",
       "      <td>1.59</td>\n",
       "      <td>5.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-06-15</th>\n",
       "      <td>100</td>\n",
       "      <td>34.99</td>\n",
       "      <td>31.69</td>\n",
       "      <td>31.69</td>\n",
       "      <td>199369.53</td>\n",
       "      <td>-3.52</td>\n",
       "      <td>-10.00</td>\n",
       "      <td>6.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-10-31</th>\n",
       "      <td>100</td>\n",
       "      <td>35.22</td>\n",
       "      <td>34.44</td>\n",
       "      <td>32.20</td>\n",
       "      <td>361660.88</td>\n",
       "      <td>2.38</td>\n",
       "      <td>7.42</td>\n",
       "      <td>9.05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-06-12</th>\n",
       "      <td>100</td>\n",
       "      <td>35.98</td>\n",
       "      <td>35.21</td>\n",
       "      <td>34.01</td>\n",
       "      <td>159825.88</td>\n",
       "      <td>0.82</td>\n",
       "      <td>2.38</td>\n",
       "      <td>5.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-06-10</th>\n",
       "      <td>100</td>\n",
       "      <td>36.35</td>\n",
       "      <td>33.85</td>\n",
       "      <td>32.23</td>\n",
       "      <td>269033.12</td>\n",
       "      <td>0.51</td>\n",
       "      <td>1.53</td>\n",
       "      <td>9.21</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2015-03-02   100  12.67  12.52  12.20   96291.73          0.32      2.62   \n",
       "2015-03-04   100  12.92  12.90  12.61   67075.44          0.20      1.57   \n",
       "2015-03-03   100  13.06  12.70  12.52  139071.61          0.18      1.44   \n",
       "2015-09-07   100  13.38  12.77  12.63   52490.04          0.37      2.98   \n",
       "2015-03-05   100  13.45  13.16  12.87   93180.39          0.26      2.02   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-06-11   100  34.98  34.39  32.51  173075.73          0.54      1.59   \n",
       "2015-06-15   100  34.99  31.69  31.69  199369.53         -3.52    -10.00   \n",
       "2017-10-31   100  35.22  34.44  32.20  361660.88          2.38      7.42   \n",
       "2015-06-12   100  35.98  35.21  34.01  159825.88          0.82      2.38   \n",
       "2015-06-10   100  36.35  33.85  32.23  269033.12          0.51      1.53   \n",
       "\n",
       "            turnover  \n",
       "2015-03-02      3.30  \n",
       "2015-03-04      2.30  \n",
       "2015-03-03      4.76  \n",
       "2015-09-07      1.80  \n",
       "2015-03-05      3.19  \n",
       "...              ...  \n",
       "2015-06-11      5.92  \n",
       "2015-06-15      6.82  \n",
       "2017-10-31      9.05  \n",
       "2015-06-12      5.47  \n",
       "2015-06-10      9.21  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 按指定列的内容升序（从小到大）排序\n",
    "data.sort_values(by='high')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "a16c4448-3e11-4dd9-a5d2-69a19a66ec69",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-06-10</th>\n",
       "      <td>100</td>\n",
       "      <td>36.35</td>\n",
       "      <td>33.85</td>\n",
       "      <td>32.23</td>\n",
       "      <td>269033.12</td>\n",
       "      <td>0.51</td>\n",
       "      <td>1.53</td>\n",
       "      <td>9.21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-06-12</th>\n",
       "      <td>100</td>\n",
       "      <td>35.98</td>\n",
       "      <td>35.21</td>\n",
       "      <td>34.01</td>\n",
       "      <td>159825.88</td>\n",
       "      <td>0.82</td>\n",
       "      <td>2.38</td>\n",
       "      <td>5.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-10-31</th>\n",
       "      <td>100</td>\n",
       "      <td>35.22</td>\n",
       "      <td>34.44</td>\n",
       "      <td>32.20</td>\n",
       "      <td>361660.88</td>\n",
       "      <td>2.38</td>\n",
       "      <td>7.42</td>\n",
       "      <td>9.05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-06-15</th>\n",
       "      <td>100</td>\n",
       "      <td>34.99</td>\n",
       "      <td>31.69</td>\n",
       "      <td>31.69</td>\n",
       "      <td>199369.53</td>\n",
       "      <td>-3.52</td>\n",
       "      <td>-10.00</td>\n",
       "      <td>6.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-06-11</th>\n",
       "      <td>100</td>\n",
       "      <td>34.98</td>\n",
       "      <td>34.39</td>\n",
       "      <td>32.51</td>\n",
       "      <td>173075.73</td>\n",
       "      <td>0.54</td>\n",
       "      <td>1.59</td>\n",
       "      <td>5.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>100</td>\n",
       "      <td>13.45</td>\n",
       "      <td>13.16</td>\n",
       "      <td>12.87</td>\n",
       "      <td>93180.39</td>\n",
       "      <td>0.26</td>\n",
       "      <td>2.02</td>\n",
       "      <td>3.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-09-07</th>\n",
       "      <td>100</td>\n",
       "      <td>13.38</td>\n",
       "      <td>12.77</td>\n",
       "      <td>12.63</td>\n",
       "      <td>52490.04</td>\n",
       "      <td>0.37</td>\n",
       "      <td>2.98</td>\n",
       "      <td>1.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>100</td>\n",
       "      <td>13.06</td>\n",
       "      <td>12.70</td>\n",
       "      <td>12.52</td>\n",
       "      <td>139071.61</td>\n",
       "      <td>0.18</td>\n",
       "      <td>1.44</td>\n",
       "      <td>4.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>100</td>\n",
       "      <td>12.92</td>\n",
       "      <td>12.90</td>\n",
       "      <td>12.61</td>\n",
       "      <td>67075.44</td>\n",
       "      <td>0.20</td>\n",
       "      <td>1.57</td>\n",
       "      <td>2.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>100</td>\n",
       "      <td>12.67</td>\n",
       "      <td>12.52</td>\n",
       "      <td>12.20</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>0.32</td>\n",
       "      <td>2.62</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2015-06-10   100  36.35  33.85  32.23  269033.12          0.51      1.53   \n",
       "2015-06-12   100  35.98  35.21  34.01  159825.88          0.82      2.38   \n",
       "2017-10-31   100  35.22  34.44  32.20  361660.88          2.38      7.42   \n",
       "2015-06-15   100  34.99  31.69  31.69  199369.53         -3.52    -10.00   \n",
       "2015-06-11   100  34.98  34.39  32.51  173075.73          0.54      1.59   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-05   100  13.45  13.16  12.87   93180.39          0.26      2.02   \n",
       "2015-09-07   100  13.38  12.77  12.63   52490.04          0.37      2.98   \n",
       "2015-03-03   100  13.06  12.70  12.52  139071.61          0.18      1.44   \n",
       "2015-03-04   100  12.92  12.90  12.61   67075.44          0.20      1.57   \n",
       "2015-03-02   100  12.67  12.52  12.20   96291.73          0.32      2.62   \n",
       "\n",
       "            turnover  \n",
       "2015-06-10      9.21  \n",
       "2015-06-12      5.47  \n",
       "2017-10-31      9.05  \n",
       "2015-06-15      6.82  \n",
       "2015-06-11      5.92  \n",
       "...              ...  \n",
       "2015-03-05      3.19  \n",
       "2015-09-07      1.80  \n",
       "2015-03-03      4.76  \n",
       "2015-03-04      2.30  \n",
       "2015-03-02      3.30  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 按指定列的内容降序（从大到小）排序\n",
    "data.sort_values(by='high', ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "6300f0c7-c3fc-413f-85bf-462195da36c9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-06-10</th>\n",
       "      <td>100</td>\n",
       "      <td>36.35</td>\n",
       "      <td>33.85</td>\n",
       "      <td>32.23</td>\n",
       "      <td>269033.12</td>\n",
       "      <td>0.51</td>\n",
       "      <td>1.53</td>\n",
       "      <td>9.21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-06-12</th>\n",
       "      <td>100</td>\n",
       "      <td>35.98</td>\n",
       "      <td>35.21</td>\n",
       "      <td>34.01</td>\n",
       "      <td>159825.88</td>\n",
       "      <td>0.82</td>\n",
       "      <td>2.38</td>\n",
       "      <td>5.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-10-31</th>\n",
       "      <td>100</td>\n",
       "      <td>35.22</td>\n",
       "      <td>34.44</td>\n",
       "      <td>32.20</td>\n",
       "      <td>361660.88</td>\n",
       "      <td>2.38</td>\n",
       "      <td>7.42</td>\n",
       "      <td>9.05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-06-15</th>\n",
       "      <td>100</td>\n",
       "      <td>34.99</td>\n",
       "      <td>31.69</td>\n",
       "      <td>31.69</td>\n",
       "      <td>199369.53</td>\n",
       "      <td>-3.52</td>\n",
       "      <td>-10.00</td>\n",
       "      <td>6.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-06-11</th>\n",
       "      <td>100</td>\n",
       "      <td>34.98</td>\n",
       "      <td>34.39</td>\n",
       "      <td>32.51</td>\n",
       "      <td>173075.73</td>\n",
       "      <td>0.54</td>\n",
       "      <td>1.59</td>\n",
       "      <td>5.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>100</td>\n",
       "      <td>13.45</td>\n",
       "      <td>13.16</td>\n",
       "      <td>12.87</td>\n",
       "      <td>93180.39</td>\n",
       "      <td>0.26</td>\n",
       "      <td>2.02</td>\n",
       "      <td>3.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-09-07</th>\n",
       "      <td>100</td>\n",
       "      <td>13.38</td>\n",
       "      <td>12.77</td>\n",
       "      <td>12.63</td>\n",
       "      <td>52490.04</td>\n",
       "      <td>0.37</td>\n",
       "      <td>2.98</td>\n",
       "      <td>1.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>100</td>\n",
       "      <td>13.06</td>\n",
       "      <td>12.70</td>\n",
       "      <td>12.52</td>\n",
       "      <td>139071.61</td>\n",
       "      <td>0.18</td>\n",
       "      <td>1.44</td>\n",
       "      <td>4.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>100</td>\n",
       "      <td>12.92</td>\n",
       "      <td>12.90</td>\n",
       "      <td>12.61</td>\n",
       "      <td>67075.44</td>\n",
       "      <td>0.20</td>\n",
       "      <td>1.57</td>\n",
       "      <td>2.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>100</td>\n",
       "      <td>12.67</td>\n",
       "      <td>12.52</td>\n",
       "      <td>12.20</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>0.32</td>\n",
       "      <td>2.62</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2015-06-10   100  36.35  33.85  32.23  269033.12          0.51      1.53   \n",
       "2015-06-12   100  35.98  35.21  34.01  159825.88          0.82      2.38   \n",
       "2017-10-31   100  35.22  34.44  32.20  361660.88          2.38      7.42   \n",
       "2015-06-15   100  34.99  31.69  31.69  199369.53         -3.52    -10.00   \n",
       "2015-06-11   100  34.98  34.39  32.51  173075.73          0.54      1.59   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-05   100  13.45  13.16  12.87   93180.39          0.26      2.02   \n",
       "2015-09-07   100  13.38  12.77  12.63   52490.04          0.37      2.98   \n",
       "2015-03-03   100  13.06  12.70  12.52  139071.61          0.18      1.44   \n",
       "2015-03-04   100  12.92  12.90  12.61   67075.44          0.20      1.57   \n",
       "2015-03-02   100  12.67  12.52  12.20   96291.73          0.32      2.62   \n",
       "\n",
       "            turnover  \n",
       "2015-06-10      9.21  \n",
       "2015-06-12      5.47  \n",
       "2017-10-31      9.05  \n",
       "2015-06-15      6.82  \n",
       "2015-06-11      5.92  \n",
       "...              ...  \n",
       "2015-03-05      3.19  \n",
       "2015-09-07      1.80  \n",
       "2015-03-03      4.76  \n",
       "2015-03-04      2.30  \n",
       "2015-03-02      3.30  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 按多个字段（列）进行排序\n",
    "data.sort_values(by=['high', 'p_change'], ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "5ac55517-1a18-40cf-9ce6-8d5a3d795e54",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>100</td>\n",
       "      <td>12.67</td>\n",
       "      <td>12.52</td>\n",
       "      <td>12.20</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>0.32</td>\n",
       "      <td>2.62</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>100</td>\n",
       "      <td>13.06</td>\n",
       "      <td>12.70</td>\n",
       "      <td>12.52</td>\n",
       "      <td>139071.61</td>\n",
       "      <td>0.18</td>\n",
       "      <td>1.44</td>\n",
       "      <td>4.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>100</td>\n",
       "      <td>12.92</td>\n",
       "      <td>12.90</td>\n",
       "      <td>12.61</td>\n",
       "      <td>67075.44</td>\n",
       "      <td>0.20</td>\n",
       "      <td>1.57</td>\n",
       "      <td>2.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>100</td>\n",
       "      <td>13.45</td>\n",
       "      <td>13.16</td>\n",
       "      <td>12.87</td>\n",
       "      <td>93180.39</td>\n",
       "      <td>0.26</td>\n",
       "      <td>2.02</td>\n",
       "      <td>3.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>100</td>\n",
       "      <td>14.48</td>\n",
       "      <td>14.28</td>\n",
       "      <td>13.13</td>\n",
       "      <td>179831.72</td>\n",
       "      <td>1.12</td>\n",
       "      <td>8.51</td>\n",
       "      <td>6.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>100</td>\n",
       "      <td>21.99</td>\n",
       "      <td>21.92</td>\n",
       "      <td>21.48</td>\n",
       "      <td>23331.04</td>\n",
       "      <td>0.44</td>\n",
       "      <td>2.05</td>\n",
       "      <td>0.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>100</td>\n",
       "      <td>22.76</td>\n",
       "      <td>22.28</td>\n",
       "      <td>22.02</td>\n",
       "      <td>36105.01</td>\n",
       "      <td>0.36</td>\n",
       "      <td>1.64</td>\n",
       "      <td>0.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>100</td>\n",
       "      <td>23.37</td>\n",
       "      <td>22.82</td>\n",
       "      <td>22.71</td>\n",
       "      <td>52914.01</td>\n",
       "      <td>0.54</td>\n",
       "      <td>2.42</td>\n",
       "      <td>1.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>222</td>\n",
       "      <td>23.78</td>\n",
       "      <td>23.53</td>\n",
       "      <td>22.80</td>\n",
       "      <td>60985.11</td>\n",
       "      <td>0.69</td>\n",
       "      <td>3.02</td>\n",
       "      <td>1.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>100</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.39</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2015-03-02   100  12.67  12.52  12.20   96291.73          0.32      2.62   \n",
       "2015-03-03   100  13.06  12.70  12.52  139071.61          0.18      1.44   \n",
       "2015-03-04   100  12.92  12.90  12.61   67075.44          0.20      1.57   \n",
       "2015-03-05   100  13.45  13.16  12.87   93180.39          0.26      2.02   \n",
       "2015-03-06   100  14.48  14.28  13.13  179831.72          1.12      8.51   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2018-02-14   100  21.99  21.92  21.48   23331.04          0.44      2.05   \n",
       "2018-02-22   100  22.76  22.28  22.02   36105.01          0.36      1.64   \n",
       "2018-02-23   100  23.37  22.82  22.71   52914.01          0.54      2.42   \n",
       "2018-02-26   222  23.78  23.53  22.80   60985.11          0.69      3.02   \n",
       "2018-02-27   100  25.88  24.16  23.53   95578.03          0.63      2.68   \n",
       "\n",
       "            turnover  \n",
       "2015-03-02      3.30  \n",
       "2015-03-03      4.76  \n",
       "2015-03-04      2.30  \n",
       "2015-03-05      3.19  \n",
       "2015-03-06      6.16  \n",
       "...              ...  \n",
       "2018-02-14      0.58  \n",
       "2018-02-22      0.90  \n",
       "2018-02-23      1.32  \n",
       "2018-02-26      1.53  \n",
       "2018-02-27      2.39  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 按索引进行排序\n",
    "data.sort_index()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "10a1e23b-f809-4cd0-89ce-851430b5fcf1",
   "metadata": {},
   "source": [
    "#### 对Series进行排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "335fc139-91a7-4bbe-b633-e3c3949dfafc",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 取出其中的某一列数据\n",
    "sr = data[\"price_change\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "f828245a-9fd1-460d-813e-8fea3c1e07ee",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2018-02-27    0.63\n",
       "2018-02-26    0.69\n",
       "2018-02-23    0.54\n",
       "2018-02-22    0.36\n",
       "2018-02-14    0.44\n",
       "              ... \n",
       "2015-03-06    1.12\n",
       "2015-03-05    0.26\n",
       "2015-03-04    0.20\n",
       "2015-03-03    0.18\n",
       "2015-03-02    0.32\n",
       "Name: price_change, Length: 643, dtype: float64"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "416973be-2ce5-49ad-b2fc-4aab2d02c178",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2015-06-15   -3.52\n",
       "2017-11-02   -3.38\n",
       "2015-06-19   -3.12\n",
       "2015-05-28   -2.80\n",
       "2015-07-14   -2.73\n",
       "              ... \n",
       "2017-06-22    2.36\n",
       "2017-10-31    2.38\n",
       "2015-05-21    2.57\n",
       "2017-10-26    2.68\n",
       "2015-06-09    3.03\n",
       "Name: price_change, Length: 643, dtype: float64"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 按升序排列\n",
    "sr.sort_values()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "9e104080-27b5-4703-aee0-dbc1f9f7fbae",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2015-06-09    3.03\n",
       "2017-10-26    2.68\n",
       "2015-05-21    2.57\n",
       "2017-10-31    2.38\n",
       "2017-06-22    2.36\n",
       "              ... \n",
       "2015-07-14   -2.73\n",
       "2015-05-28   -2.80\n",
       "2015-06-19   -3.12\n",
       "2017-11-02   -3.38\n",
       "2015-06-15   -3.52\n",
       "Name: price_change, Length: 643, dtype: float64"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 按降序排列\n",
    "sr.sort_values(ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "a8da7218-a265-496c-a0b2-0aeb9ba75275",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2015-03-02    0.32\n",
       "2015-03-03    0.18\n",
       "2015-03-04    0.20\n",
       "2015-03-05    0.26\n",
       "2015-03-06    1.12\n",
       "              ... \n",
       "2018-02-14    0.44\n",
       "2018-02-22    0.36\n",
       "2018-02-23    0.54\n",
       "2018-02-26    0.69\n",
       "2018-02-27    0.63\n",
       "Name: price_change, Length: 643, dtype: float64"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 按索引排序\n",
    "sr.sort_index()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "54255b7c-aa0c-432a-ab69-8b7ec08b4837",
   "metadata": {},
   "source": [
    "## 4.3 DataFrame的运算"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6420ef78-2415-401d-9b73-7782ab4f9b95",
   "metadata": {},
   "source": [
    "### 4.3.1 算术运算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "8fbd3e13-1510-441b-a8c8-aa21ac67be3a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>100</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>222</td>\n",
       "      <td>23.78</td>\n",
       "      <td>23.53</td>\n",
       "      <td>22.80</td>\n",
       "      <td>60985.11</td>\n",
       "      <td>0.69</td>\n",
       "      <td>3.02</td>\n",
       "      <td>1.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>100</td>\n",
       "      <td>23.37</td>\n",
       "      <td>22.82</td>\n",
       "      <td>22.71</td>\n",
       "      <td>52914.01</td>\n",
       "      <td>0.54</td>\n",
       "      <td>2.42</td>\n",
       "      <td>1.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>100</td>\n",
       "      <td>22.76</td>\n",
       "      <td>22.28</td>\n",
       "      <td>22.02</td>\n",
       "      <td>36105.01</td>\n",
       "      <td>0.36</td>\n",
       "      <td>1.64</td>\n",
       "      <td>0.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>100</td>\n",
       "      <td>21.99</td>\n",
       "      <td>21.92</td>\n",
       "      <td>21.48</td>\n",
       "      <td>23331.04</td>\n",
       "      <td>0.44</td>\n",
       "      <td>2.05</td>\n",
       "      <td>0.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>100</td>\n",
       "      <td>14.48</td>\n",
       "      <td>14.28</td>\n",
       "      <td>13.13</td>\n",
       "      <td>179831.72</td>\n",
       "      <td>1.12</td>\n",
       "      <td>8.51</td>\n",
       "      <td>6.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>100</td>\n",
       "      <td>13.45</td>\n",
       "      <td>13.16</td>\n",
       "      <td>12.87</td>\n",
       "      <td>93180.39</td>\n",
       "      <td>0.26</td>\n",
       "      <td>2.02</td>\n",
       "      <td>3.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>100</td>\n",
       "      <td>12.92</td>\n",
       "      <td>12.90</td>\n",
       "      <td>12.61</td>\n",
       "      <td>67075.44</td>\n",
       "      <td>0.20</td>\n",
       "      <td>1.57</td>\n",
       "      <td>2.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>100</td>\n",
       "      <td>13.06</td>\n",
       "      <td>12.70</td>\n",
       "      <td>12.52</td>\n",
       "      <td>139071.61</td>\n",
       "      <td>0.18</td>\n",
       "      <td>1.44</td>\n",
       "      <td>4.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>100</td>\n",
       "      <td>12.67</td>\n",
       "      <td>12.52</td>\n",
       "      <td>12.20</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>0.32</td>\n",
       "      <td>2.62</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27   100  25.88  24.16  23.53   95578.03          0.63      2.68   \n",
       "2018-02-26   222  23.78  23.53  22.80   60985.11          0.69      3.02   \n",
       "2018-02-23   100  23.37  22.82  22.71   52914.01          0.54      2.42   \n",
       "2018-02-22   100  22.76  22.28  22.02   36105.01          0.36      1.64   \n",
       "2018-02-14   100  21.99  21.92  21.48   23331.04          0.44      2.05   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-06   100  14.48  14.28  13.13  179831.72          1.12      8.51   \n",
       "2015-03-05   100  13.45  13.16  12.87   93180.39          0.26      2.02   \n",
       "2015-03-04   100  12.92  12.90  12.61   67075.44          0.20      1.57   \n",
       "2015-03-03   100  13.06  12.70  12.52  139071.61          0.18      1.44   \n",
       "2015-03-02   100  12.67  12.52  12.20   96291.73          0.32      2.62   \n",
       "\n",
       "            turnover  \n",
       "2018-02-27      2.39  \n",
       "2018-02-26      1.53  \n",
       "2018-02-23      1.32  \n",
       "2018-02-22      0.90  \n",
       "2018-02-14      0.58  \n",
       "...              ...  \n",
       "2015-03-06      6.16  \n",
       "2015-03-05      3.19  \n",
       "2015-03-04      2.30  \n",
       "2015-03-03      4.76  \n",
       "2015-03-02      3.30  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "e70bf6c2-cefc-43a8-966a-34a80305107f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2018-02-27    103\n",
       "2018-02-26    225\n",
       "2018-02-23    103\n",
       "2018-02-22    103\n",
       "2018-02-14    103\n",
       "             ... \n",
       "2015-03-06    103\n",
       "2015-03-05    103\n",
       "2015-03-04    103\n",
       "2015-03-03    103\n",
       "2015-03-02    103\n",
       "Name: open, Length: 643, dtype: int64"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将open列统一加3（算术运算符）\n",
    "data[\"open\"] + 3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "aab3bfac-3f0c-4ce6-b3cb-6d9c75106221",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2018-02-27    103\n",
       "2018-02-26    225\n",
       "2018-02-23    103\n",
       "2018-02-22    103\n",
       "2018-02-14    103\n",
       "             ... \n",
       "2015-03-06    103\n",
       "2015-03-05    103\n",
       "2015-03-04    103\n",
       "2015-03-03    103\n",
       "2015-03-02    103\n",
       "Name: open, Length: 643, dtype: int64"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将open列统一加3（add方法）\n",
    "data['open'].add(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "ae89337e-1123-49cf-a1cb-980dc1037cde",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>110</td>\n",
       "      <td>35.88</td>\n",
       "      <td>34.16</td>\n",
       "      <td>33.53</td>\n",
       "      <td>95588.03</td>\n",
       "      <td>10.63</td>\n",
       "      <td>12.68</td>\n",
       "      <td>12.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>232</td>\n",
       "      <td>33.78</td>\n",
       "      <td>33.53</td>\n",
       "      <td>32.80</td>\n",
       "      <td>60995.11</td>\n",
       "      <td>10.69</td>\n",
       "      <td>13.02</td>\n",
       "      <td>11.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>110</td>\n",
       "      <td>33.37</td>\n",
       "      <td>32.82</td>\n",
       "      <td>32.71</td>\n",
       "      <td>52924.01</td>\n",
       "      <td>10.54</td>\n",
       "      <td>12.42</td>\n",
       "      <td>11.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>110</td>\n",
       "      <td>32.76</td>\n",
       "      <td>32.28</td>\n",
       "      <td>32.02</td>\n",
       "      <td>36115.01</td>\n",
       "      <td>10.36</td>\n",
       "      <td>11.64</td>\n",
       "      <td>10.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>110</td>\n",
       "      <td>31.99</td>\n",
       "      <td>31.92</td>\n",
       "      <td>31.48</td>\n",
       "      <td>23341.04</td>\n",
       "      <td>10.44</td>\n",
       "      <td>12.05</td>\n",
       "      <td>10.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>110</td>\n",
       "      <td>24.48</td>\n",
       "      <td>24.28</td>\n",
       "      <td>23.13</td>\n",
       "      <td>179841.72</td>\n",
       "      <td>11.12</td>\n",
       "      <td>18.51</td>\n",
       "      <td>16.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>110</td>\n",
       "      <td>23.45</td>\n",
       "      <td>23.16</td>\n",
       "      <td>22.87</td>\n",
       "      <td>93190.39</td>\n",
       "      <td>10.26</td>\n",
       "      <td>12.02</td>\n",
       "      <td>13.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>110</td>\n",
       "      <td>22.92</td>\n",
       "      <td>22.90</td>\n",
       "      <td>22.61</td>\n",
       "      <td>67085.44</td>\n",
       "      <td>10.20</td>\n",
       "      <td>11.57</td>\n",
       "      <td>12.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>110</td>\n",
       "      <td>23.06</td>\n",
       "      <td>22.70</td>\n",
       "      <td>22.52</td>\n",
       "      <td>139081.61</td>\n",
       "      <td>10.18</td>\n",
       "      <td>11.44</td>\n",
       "      <td>14.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>110</td>\n",
       "      <td>22.67</td>\n",
       "      <td>22.52</td>\n",
       "      <td>22.20</td>\n",
       "      <td>96301.73</td>\n",
       "      <td>10.32</td>\n",
       "      <td>12.62</td>\n",
       "      <td>13.30</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27   110  35.88  34.16  33.53   95588.03         10.63     12.68   \n",
       "2018-02-26   232  33.78  33.53  32.80   60995.11         10.69     13.02   \n",
       "2018-02-23   110  33.37  32.82  32.71   52924.01         10.54     12.42   \n",
       "2018-02-22   110  32.76  32.28  32.02   36115.01         10.36     11.64   \n",
       "2018-02-14   110  31.99  31.92  31.48   23341.04         10.44     12.05   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-06   110  24.48  24.28  23.13  179841.72         11.12     18.51   \n",
       "2015-03-05   110  23.45  23.16  22.87   93190.39         10.26     12.02   \n",
       "2015-03-04   110  22.92  22.90  22.61   67085.44         10.20     11.57   \n",
       "2015-03-03   110  23.06  22.70  22.52  139081.61         10.18     11.44   \n",
       "2015-03-02   110  22.67  22.52  22.20   96301.73         10.32     12.62   \n",
       "\n",
       "            turnover  \n",
       "2018-02-27     12.39  \n",
       "2018-02-26     11.53  \n",
       "2018-02-23     11.32  \n",
       "2018-02-22     10.90  \n",
       "2018-02-14     10.58  \n",
       "...              ...  \n",
       "2015-03-06     16.16  \n",
       "2015-03-05     13.19  \n",
       "2015-03-04     12.30  \n",
       "2015-03-03     14.76  \n",
       "2015-03-02     13.30  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 让所有数据统一加10\n",
    "data + 10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "7b2e88bb-7166-4617-9484-bf0bdb86853d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>10.0</td>\n",
       "      <td>2.588</td>\n",
       "      <td>2.416</td>\n",
       "      <td>2.353</td>\n",
       "      <td>9557.803</td>\n",
       "      <td>0.063</td>\n",
       "      <td>0.268</td>\n",
       "      <td>0.239</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>22.2</td>\n",
       "      <td>2.378</td>\n",
       "      <td>2.353</td>\n",
       "      <td>2.280</td>\n",
       "      <td>6098.511</td>\n",
       "      <td>0.069</td>\n",
       "      <td>0.302</td>\n",
       "      <td>0.153</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>10.0</td>\n",
       "      <td>2.337</td>\n",
       "      <td>2.282</td>\n",
       "      <td>2.271</td>\n",
       "      <td>5291.401</td>\n",
       "      <td>0.054</td>\n",
       "      <td>0.242</td>\n",
       "      <td>0.132</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>10.0</td>\n",
       "      <td>2.276</td>\n",
       "      <td>2.228</td>\n",
       "      <td>2.202</td>\n",
       "      <td>3610.501</td>\n",
       "      <td>0.036</td>\n",
       "      <td>0.164</td>\n",
       "      <td>0.090</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>10.0</td>\n",
       "      <td>2.199</td>\n",
       "      <td>2.192</td>\n",
       "      <td>2.148</td>\n",
       "      <td>2333.104</td>\n",
       "      <td>0.044</td>\n",
       "      <td>0.205</td>\n",
       "      <td>0.058</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>10.0</td>\n",
       "      <td>1.448</td>\n",
       "      <td>1.428</td>\n",
       "      <td>1.313</td>\n",
       "      <td>17983.172</td>\n",
       "      <td>0.112</td>\n",
       "      <td>0.851</td>\n",
       "      <td>0.616</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>10.0</td>\n",
       "      <td>1.345</td>\n",
       "      <td>1.316</td>\n",
       "      <td>1.287</td>\n",
       "      <td>9318.039</td>\n",
       "      <td>0.026</td>\n",
       "      <td>0.202</td>\n",
       "      <td>0.319</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>10.0</td>\n",
       "      <td>1.292</td>\n",
       "      <td>1.290</td>\n",
       "      <td>1.261</td>\n",
       "      <td>6707.544</td>\n",
       "      <td>0.020</td>\n",
       "      <td>0.157</td>\n",
       "      <td>0.230</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>10.0</td>\n",
       "      <td>1.306</td>\n",
       "      <td>1.270</td>\n",
       "      <td>1.252</td>\n",
       "      <td>13907.161</td>\n",
       "      <td>0.018</td>\n",
       "      <td>0.144</td>\n",
       "      <td>0.476</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>10.0</td>\n",
       "      <td>1.267</td>\n",
       "      <td>1.252</td>\n",
       "      <td>1.220</td>\n",
       "      <td>9629.173</td>\n",
       "      <td>0.032</td>\n",
       "      <td>0.262</td>\n",
       "      <td>0.330</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27  10.0  2.588  2.416  2.353   9557.803         0.063     0.268   \n",
       "2018-02-26  22.2  2.378  2.353  2.280   6098.511         0.069     0.302   \n",
       "2018-02-23  10.0  2.337  2.282  2.271   5291.401         0.054     0.242   \n",
       "2018-02-22  10.0  2.276  2.228  2.202   3610.501         0.036     0.164   \n",
       "2018-02-14  10.0  2.199  2.192  2.148   2333.104         0.044     0.205   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-06  10.0  1.448  1.428  1.313  17983.172         0.112     0.851   \n",
       "2015-03-05  10.0  1.345  1.316  1.287   9318.039         0.026     0.202   \n",
       "2015-03-04  10.0  1.292  1.290  1.261   6707.544         0.020     0.157   \n",
       "2015-03-03  10.0  1.306  1.270  1.252  13907.161         0.018     0.144   \n",
       "2015-03-02  10.0  1.267  1.252  1.220   9629.173         0.032     0.262   \n",
       "\n",
       "            turnover  \n",
       "2018-02-27     0.239  \n",
       "2018-02-26     0.153  \n",
       "2018-02-23     0.132  \n",
       "2018-02-22     0.090  \n",
       "2018-02-14     0.058  \n",
       "...              ...  \n",
       "2015-03-06     0.616  \n",
       "2015-03-05     0.319  \n",
       "2015-03-04     0.230  \n",
       "2015-03-03     0.476  \n",
       "2015-03-02     0.330  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data / 10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "049428c1-c925-415a-8c29-71115cfeadef",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>0</td>\n",
       "      <td>-74.12</td>\n",
       "      <td>-75.84</td>\n",
       "      <td>-76.47</td>\n",
       "      <td>95478.03</td>\n",
       "      <td>-99.37</td>\n",
       "      <td>-97.32</td>\n",
       "      <td>-97.61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>122</td>\n",
       "      <td>-76.22</td>\n",
       "      <td>-76.47</td>\n",
       "      <td>-77.20</td>\n",
       "      <td>60885.11</td>\n",
       "      <td>-99.31</td>\n",
       "      <td>-96.98</td>\n",
       "      <td>-98.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>0</td>\n",
       "      <td>-76.63</td>\n",
       "      <td>-77.18</td>\n",
       "      <td>-77.29</td>\n",
       "      <td>52814.01</td>\n",
       "      <td>-99.46</td>\n",
       "      <td>-97.58</td>\n",
       "      <td>-98.68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>0</td>\n",
       "      <td>-77.24</td>\n",
       "      <td>-77.72</td>\n",
       "      <td>-77.98</td>\n",
       "      <td>36005.01</td>\n",
       "      <td>-99.64</td>\n",
       "      <td>-98.36</td>\n",
       "      <td>-99.10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>0</td>\n",
       "      <td>-78.01</td>\n",
       "      <td>-78.08</td>\n",
       "      <td>-78.52</td>\n",
       "      <td>23231.04</td>\n",
       "      <td>-99.56</td>\n",
       "      <td>-97.95</td>\n",
       "      <td>-99.42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>0</td>\n",
       "      <td>-85.52</td>\n",
       "      <td>-85.72</td>\n",
       "      <td>-86.87</td>\n",
       "      <td>179731.72</td>\n",
       "      <td>-98.88</td>\n",
       "      <td>-91.49</td>\n",
       "      <td>-93.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>0</td>\n",
       "      <td>-86.55</td>\n",
       "      <td>-86.84</td>\n",
       "      <td>-87.13</td>\n",
       "      <td>93080.39</td>\n",
       "      <td>-99.74</td>\n",
       "      <td>-97.98</td>\n",
       "      <td>-96.81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>0</td>\n",
       "      <td>-87.08</td>\n",
       "      <td>-87.10</td>\n",
       "      <td>-87.39</td>\n",
       "      <td>66975.44</td>\n",
       "      <td>-99.80</td>\n",
       "      <td>-98.43</td>\n",
       "      <td>-97.70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>0</td>\n",
       "      <td>-86.94</td>\n",
       "      <td>-87.30</td>\n",
       "      <td>-87.48</td>\n",
       "      <td>138971.61</td>\n",
       "      <td>-99.82</td>\n",
       "      <td>-98.56</td>\n",
       "      <td>-95.24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>0</td>\n",
       "      <td>-87.33</td>\n",
       "      <td>-87.48</td>\n",
       "      <td>-87.80</td>\n",
       "      <td>96191.73</td>\n",
       "      <td>-99.68</td>\n",
       "      <td>-97.38</td>\n",
       "      <td>-96.70</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27     0 -74.12 -75.84 -76.47   95478.03        -99.37    -97.32   \n",
       "2018-02-26   122 -76.22 -76.47 -77.20   60885.11        -99.31    -96.98   \n",
       "2018-02-23     0 -76.63 -77.18 -77.29   52814.01        -99.46    -97.58   \n",
       "2018-02-22     0 -77.24 -77.72 -77.98   36005.01        -99.64    -98.36   \n",
       "2018-02-14     0 -78.01 -78.08 -78.52   23231.04        -99.56    -97.95   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-06     0 -85.52 -85.72 -86.87  179731.72        -98.88    -91.49   \n",
       "2015-03-05     0 -86.55 -86.84 -87.13   93080.39        -99.74    -97.98   \n",
       "2015-03-04     0 -87.08 -87.10 -87.39   66975.44        -99.80    -98.43   \n",
       "2015-03-03     0 -86.94 -87.30 -87.48  138971.61        -99.82    -98.56   \n",
       "2015-03-02     0 -87.33 -87.48 -87.80   96191.73        -99.68    -97.38   \n",
       "\n",
       "            turnover  \n",
       "2018-02-27    -97.61  \n",
       "2018-02-26    -98.47  \n",
       "2018-02-23    -98.68  \n",
       "2018-02-22    -99.10  \n",
       "2018-02-14    -99.42  \n",
       "...              ...  \n",
       "2015-03-06    -93.84  \n",
       "2015-03-05    -96.81  \n",
       "2015-03-04    -97.70  \n",
       "2015-03-03    -95.24  \n",
       "2015-03-02    -96.70  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.sub(100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "74bc0914-093e-4847-bf55-4e1c68780f48",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>100</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>222</td>\n",
       "      <td>23.78</td>\n",
       "      <td>23.53</td>\n",
       "      <td>22.80</td>\n",
       "      <td>60985.11</td>\n",
       "      <td>0.69</td>\n",
       "      <td>3.02</td>\n",
       "      <td>1.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>100</td>\n",
       "      <td>23.37</td>\n",
       "      <td>22.82</td>\n",
       "      <td>22.71</td>\n",
       "      <td>52914.01</td>\n",
       "      <td>0.54</td>\n",
       "      <td>2.42</td>\n",
       "      <td>1.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>100</td>\n",
       "      <td>22.76</td>\n",
       "      <td>22.28</td>\n",
       "      <td>22.02</td>\n",
       "      <td>36105.01</td>\n",
       "      <td>0.36</td>\n",
       "      <td>1.64</td>\n",
       "      <td>0.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>100</td>\n",
       "      <td>21.99</td>\n",
       "      <td>21.92</td>\n",
       "      <td>21.48</td>\n",
       "      <td>23331.04</td>\n",
       "      <td>0.44</td>\n",
       "      <td>2.05</td>\n",
       "      <td>0.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>100</td>\n",
       "      <td>14.48</td>\n",
       "      <td>14.28</td>\n",
       "      <td>13.13</td>\n",
       "      <td>179831.72</td>\n",
       "      <td>1.12</td>\n",
       "      <td>8.51</td>\n",
       "      <td>6.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>100</td>\n",
       "      <td>13.45</td>\n",
       "      <td>13.16</td>\n",
       "      <td>12.87</td>\n",
       "      <td>93180.39</td>\n",
       "      <td>0.26</td>\n",
       "      <td>2.02</td>\n",
       "      <td>3.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>100</td>\n",
       "      <td>12.92</td>\n",
       "      <td>12.90</td>\n",
       "      <td>12.61</td>\n",
       "      <td>67075.44</td>\n",
       "      <td>0.20</td>\n",
       "      <td>1.57</td>\n",
       "      <td>2.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>100</td>\n",
       "      <td>13.06</td>\n",
       "      <td>12.70</td>\n",
       "      <td>12.52</td>\n",
       "      <td>139071.61</td>\n",
       "      <td>0.18</td>\n",
       "      <td>1.44</td>\n",
       "      <td>4.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>100</td>\n",
       "      <td>12.67</td>\n",
       "      <td>12.52</td>\n",
       "      <td>12.20</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>0.32</td>\n",
       "      <td>2.62</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27   100  25.88  24.16  23.53   95578.03          0.63      2.68   \n",
       "2018-02-26   222  23.78  23.53  22.80   60985.11          0.69      3.02   \n",
       "2018-02-23   100  23.37  22.82  22.71   52914.01          0.54      2.42   \n",
       "2018-02-22   100  22.76  22.28  22.02   36105.01          0.36      1.64   \n",
       "2018-02-14   100  21.99  21.92  21.48   23331.04          0.44      2.05   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-06   100  14.48  14.28  13.13  179831.72          1.12      8.51   \n",
       "2015-03-05   100  13.45  13.16  12.87   93180.39          0.26      2.02   \n",
       "2015-03-04   100  12.92  12.90  12.61   67075.44          0.20      1.57   \n",
       "2015-03-03   100  13.06  12.70  12.52  139071.61          0.18      1.44   \n",
       "2015-03-02   100  12.67  12.52  12.20   96291.73          0.32      2.62   \n",
       "\n",
       "            turnover  \n",
       "2018-02-27      2.39  \n",
       "2018-02-26      1.53  \n",
       "2018-02-23      1.32  \n",
       "2018-02-22      0.90  \n",
       "2018-02-14      0.58  \n",
       "...              ...  \n",
       "2015-03-06      6.16  \n",
       "2015-03-05      3.19  \n",
       "2015-03-04      2.30  \n",
       "2015-03-03      4.76  \n",
       "2015-03-02      3.30  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "c373a04f-00c6-4f8b-8978-2ccc32cbdbbf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2018-02-27    -75.84\n",
       "2018-02-26   -198.47\n",
       "2018-02-23    -77.18\n",
       "2018-02-22    -77.72\n",
       "2018-02-14    -78.08\n",
       "               ...  \n",
       "2015-03-06    -85.72\n",
       "2015-03-05    -86.84\n",
       "2015-03-04    -87.10\n",
       "2015-03-03    -87.30\n",
       "2015-03-02    -87.48\n",
       "Name: m_price_change, Length: 643, dtype: float64"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算每天的涨跌\n",
    "data['m_price_change'] = data['close'].sub(data['open'])\n",
    "data['m_price_change']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "92f95b1f-15e5-4de4-af66-40715f903c83",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "      <th>m_price_change</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>100</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.39</td>\n",
       "      <td>-75.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>222</td>\n",
       "      <td>23.78</td>\n",
       "      <td>23.53</td>\n",
       "      <td>22.80</td>\n",
       "      <td>60985.11</td>\n",
       "      <td>0.69</td>\n",
       "      <td>3.02</td>\n",
       "      <td>1.53</td>\n",
       "      <td>-198.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>100</td>\n",
       "      <td>23.37</td>\n",
       "      <td>22.82</td>\n",
       "      <td>22.71</td>\n",
       "      <td>52914.01</td>\n",
       "      <td>0.54</td>\n",
       "      <td>2.42</td>\n",
       "      <td>1.32</td>\n",
       "      <td>-77.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>100</td>\n",
       "      <td>22.76</td>\n",
       "      <td>22.28</td>\n",
       "      <td>22.02</td>\n",
       "      <td>36105.01</td>\n",
       "      <td>0.36</td>\n",
       "      <td>1.64</td>\n",
       "      <td>0.90</td>\n",
       "      <td>-77.72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>100</td>\n",
       "      <td>21.99</td>\n",
       "      <td>21.92</td>\n",
       "      <td>21.48</td>\n",
       "      <td>23331.04</td>\n",
       "      <td>0.44</td>\n",
       "      <td>2.05</td>\n",
       "      <td>0.58</td>\n",
       "      <td>-78.08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>100</td>\n",
       "      <td>14.48</td>\n",
       "      <td>14.28</td>\n",
       "      <td>13.13</td>\n",
       "      <td>179831.72</td>\n",
       "      <td>1.12</td>\n",
       "      <td>8.51</td>\n",
       "      <td>6.16</td>\n",
       "      <td>-85.72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>100</td>\n",
       "      <td>13.45</td>\n",
       "      <td>13.16</td>\n",
       "      <td>12.87</td>\n",
       "      <td>93180.39</td>\n",
       "      <td>0.26</td>\n",
       "      <td>2.02</td>\n",
       "      <td>3.19</td>\n",
       "      <td>-86.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>100</td>\n",
       "      <td>12.92</td>\n",
       "      <td>12.90</td>\n",
       "      <td>12.61</td>\n",
       "      <td>67075.44</td>\n",
       "      <td>0.20</td>\n",
       "      <td>1.57</td>\n",
       "      <td>2.30</td>\n",
       "      <td>-87.10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>100</td>\n",
       "      <td>13.06</td>\n",
       "      <td>12.70</td>\n",
       "      <td>12.52</td>\n",
       "      <td>139071.61</td>\n",
       "      <td>0.18</td>\n",
       "      <td>1.44</td>\n",
       "      <td>4.76</td>\n",
       "      <td>-87.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>100</td>\n",
       "      <td>12.67</td>\n",
       "      <td>12.52</td>\n",
       "      <td>12.20</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>0.32</td>\n",
       "      <td>2.62</td>\n",
       "      <td>3.30</td>\n",
       "      <td>-87.48</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27   100  25.88  24.16  23.53   95578.03          0.63      2.68   \n",
       "2018-02-26   222  23.78  23.53  22.80   60985.11          0.69      3.02   \n",
       "2018-02-23   100  23.37  22.82  22.71   52914.01          0.54      2.42   \n",
       "2018-02-22   100  22.76  22.28  22.02   36105.01          0.36      1.64   \n",
       "2018-02-14   100  21.99  21.92  21.48   23331.04          0.44      2.05   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-06   100  14.48  14.28  13.13  179831.72          1.12      8.51   \n",
       "2015-03-05   100  13.45  13.16  12.87   93180.39          0.26      2.02   \n",
       "2015-03-04   100  12.92  12.90  12.61   67075.44          0.20      1.57   \n",
       "2015-03-03   100  13.06  12.70  12.52  139071.61          0.18      1.44   \n",
       "2015-03-02   100  12.67  12.52  12.20   96291.73          0.32      2.62   \n",
       "\n",
       "            turnover  m_price_change  \n",
       "2018-02-27      2.39          -75.84  \n",
       "2018-02-26      1.53         -198.47  \n",
       "2018-02-23      1.32          -77.18  \n",
       "2018-02-22      0.90          -77.72  \n",
       "2018-02-14      0.58          -78.08  \n",
       "...              ...             ...  \n",
       "2015-03-06      6.16          -85.72  \n",
       "2015-03-05      3.19          -86.84  \n",
       "2015-03-04      2.30          -87.10  \n",
       "2015-03-03      4.76          -87.30  \n",
       "2015-03-02      3.30          -87.48  \n",
       "\n",
       "[643 rows x 9 columns]"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "525f586d-da33-4e1a-b522-c0a26e77be3f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2018-02-27    0.63\n",
       "2018-02-26    0.73\n",
       "2018-02-23   -0.06\n",
       "2018-02-22    0.03\n",
       "2018-02-14    0.43\n",
       "              ... \n",
       "2015-03-06    1.11\n",
       "2015-03-05    0.28\n",
       "2015-03-04    0.10\n",
       "2015-03-03    0.18\n",
       "2015-03-02    0.27\n",
       "Length: 643, dtype: float64"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 从csv文件读取数据\n",
    "data2 = pd.read_csv(\"./stock_day/stock_day.csv\")\n",
    "# 计算每天的涨跌\n",
    "data2['close'].sub(data2['open'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "609f6016-0321-4b95-b91f-23a739801756",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2018-02-27    0.026774\n",
       "2018-02-26    0.032018\n",
       "2018-02-23   -0.002622\n",
       "2018-02-22    0.001348\n",
       "2018-02-14    0.020009\n",
       "                ...   \n",
       "2015-03-06    0.084282\n",
       "2015-03-05    0.021739\n",
       "2015-03-04    0.007812\n",
       "2015-03-03    0.014377\n",
       "2015-03-02    0.022041\n",
       "Length: 643, dtype: float64"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算每天的涨跌幅\n",
    "data2['close'].sub(data2['open']) / data2['open']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2c789024-77a9-4739-9c8d-049d70ace283",
   "metadata": {},
   "source": [
    "### 4.3.2 逻辑运算"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b56182d0-6974-49c0-b594-9252a9b9a5fe",
   "metadata": {},
   "source": [
    "#### 逻辑运算符号 <、>、|、&"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "c7efe022-4821-41c3-85ba-f678645b87b6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "      <th>m_price_change</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>100</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.39</td>\n",
       "      <td>-75.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>222</td>\n",
       "      <td>23.78</td>\n",
       "      <td>23.53</td>\n",
       "      <td>22.80</td>\n",
       "      <td>60985.11</td>\n",
       "      <td>0.69</td>\n",
       "      <td>3.02</td>\n",
       "      <td>1.53</td>\n",
       "      <td>-198.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>100</td>\n",
       "      <td>23.37</td>\n",
       "      <td>22.82</td>\n",
       "      <td>22.71</td>\n",
       "      <td>52914.01</td>\n",
       "      <td>0.54</td>\n",
       "      <td>2.42</td>\n",
       "      <td>1.32</td>\n",
       "      <td>-77.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>100</td>\n",
       "      <td>21.99</td>\n",
       "      <td>21.92</td>\n",
       "      <td>21.48</td>\n",
       "      <td>23331.04</td>\n",
       "      <td>0.44</td>\n",
       "      <td>2.05</td>\n",
       "      <td>0.58</td>\n",
       "      <td>-78.08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-12</th>\n",
       "      <td>100</td>\n",
       "      <td>21.40</td>\n",
       "      <td>21.19</td>\n",
       "      <td>20.63</td>\n",
       "      <td>32445.39</td>\n",
       "      <td>0.82</td>\n",
       "      <td>4.03</td>\n",
       "      <td>0.81</td>\n",
       "      <td>-78.81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-13</th>\n",
       "      <td>100</td>\n",
       "      <td>14.50</td>\n",
       "      <td>14.47</td>\n",
       "      <td>14.08</td>\n",
       "      <td>61342.22</td>\n",
       "      <td>0.36</td>\n",
       "      <td>2.55</td>\n",
       "      <td>2.10</td>\n",
       "      <td>-85.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-10</th>\n",
       "      <td>100</td>\n",
       "      <td>14.80</td>\n",
       "      <td>14.65</td>\n",
       "      <td>14.01</td>\n",
       "      <td>101213.51</td>\n",
       "      <td>0.34</td>\n",
       "      <td>2.38</td>\n",
       "      <td>3.46</td>\n",
       "      <td>-85.35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>100</td>\n",
       "      <td>14.48</td>\n",
       "      <td>14.28</td>\n",
       "      <td>13.13</td>\n",
       "      <td>179831.72</td>\n",
       "      <td>1.12</td>\n",
       "      <td>8.51</td>\n",
       "      <td>6.16</td>\n",
       "      <td>-85.72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>100</td>\n",
       "      <td>13.45</td>\n",
       "      <td>13.16</td>\n",
       "      <td>12.87</td>\n",
       "      <td>93180.39</td>\n",
       "      <td>0.26</td>\n",
       "      <td>2.02</td>\n",
       "      <td>3.19</td>\n",
       "      <td>-86.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>100</td>\n",
       "      <td>12.67</td>\n",
       "      <td>12.52</td>\n",
       "      <td>12.20</td>\n",
       "      <td>96291.73</td>\n",
       "      <td>0.32</td>\n",
       "      <td>2.62</td>\n",
       "      <td>3.30</td>\n",
       "      <td>-87.48</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>183 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27   100  25.88  24.16  23.53   95578.03          0.63      2.68   \n",
       "2018-02-26   222  23.78  23.53  22.80   60985.11          0.69      3.02   \n",
       "2018-02-23   100  23.37  22.82  22.71   52914.01          0.54      2.42   \n",
       "2018-02-14   100  21.99  21.92  21.48   23331.04          0.44      2.05   \n",
       "2018-02-12   100  21.40  21.19  20.63   32445.39          0.82      4.03   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-13   100  14.50  14.47  14.08   61342.22          0.36      2.55   \n",
       "2015-03-10   100  14.80  14.65  14.01  101213.51          0.34      2.38   \n",
       "2015-03-06   100  14.48  14.28  13.13  179831.72          1.12      8.51   \n",
       "2015-03-05   100  13.45  13.16  12.87   93180.39          0.26      2.02   \n",
       "2015-03-02   100  12.67  12.52  12.20   96291.73          0.32      2.62   \n",
       "\n",
       "            turnover  m_price_change  \n",
       "2018-02-27      2.39          -75.84  \n",
       "2018-02-26      1.53         -198.47  \n",
       "2018-02-23      1.32          -77.18  \n",
       "2018-02-14      0.58          -78.08  \n",
       "2018-02-12      0.81          -78.81  \n",
       "...              ...             ...  \n",
       "2015-03-13      2.10          -85.53  \n",
       "2015-03-10      3.46          -85.35  \n",
       "2015-03-06      6.16          -85.72  \n",
       "2015-03-05      3.19          -86.84  \n",
       "2015-03-02      3.30          -87.48  \n",
       "\n",
       "[183 rows x 9 columns]"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 筛选p_change大于2的日期数据，先找出p_change大于2的行，然后使用布尔索引的方法筛选出为True的数据\n",
    "data[data['p_change'] > 2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "ded9a4a7-1d67-4552-8f03-9fdd691675cc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "      <th>m_price_change</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>100</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.39</td>\n",
       "      <td>-75.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>222</td>\n",
       "      <td>23.78</td>\n",
       "      <td>23.53</td>\n",
       "      <td>22.80</td>\n",
       "      <td>60985.11</td>\n",
       "      <td>0.69</td>\n",
       "      <td>3.02</td>\n",
       "      <td>1.53</td>\n",
       "      <td>-198.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>100</td>\n",
       "      <td>23.37</td>\n",
       "      <td>22.82</td>\n",
       "      <td>22.71</td>\n",
       "      <td>52914.01</td>\n",
       "      <td>0.54</td>\n",
       "      <td>2.42</td>\n",
       "      <td>1.32</td>\n",
       "      <td>-77.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>100</td>\n",
       "      <td>21.99</td>\n",
       "      <td>21.92</td>\n",
       "      <td>21.48</td>\n",
       "      <td>23331.04</td>\n",
       "      <td>0.44</td>\n",
       "      <td>2.05</td>\n",
       "      <td>0.58</td>\n",
       "      <td>-78.08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-12</th>\n",
       "      <td>100</td>\n",
       "      <td>21.40</td>\n",
       "      <td>21.19</td>\n",
       "      <td>20.63</td>\n",
       "      <td>32445.39</td>\n",
       "      <td>0.82</td>\n",
       "      <td>4.03</td>\n",
       "      <td>0.81</td>\n",
       "      <td>-78.81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-04-13</th>\n",
       "      <td>100</td>\n",
       "      <td>21.30</td>\n",
       "      <td>21.13</td>\n",
       "      <td>19.50</td>\n",
       "      <td>171822.69</td>\n",
       "      <td>1.70</td>\n",
       "      <td>8.75</td>\n",
       "      <td>5.88</td>\n",
       "      <td>-78.87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-04-09</th>\n",
       "      <td>100</td>\n",
       "      <td>19.89</td>\n",
       "      <td>19.62</td>\n",
       "      <td>18.02</td>\n",
       "      <td>183119.05</td>\n",
       "      <td>1.20</td>\n",
       "      <td>6.51</td>\n",
       "      <td>6.27</td>\n",
       "      <td>-80.38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-04-08</th>\n",
       "      <td>100</td>\n",
       "      <td>18.53</td>\n",
       "      <td>18.42</td>\n",
       "      <td>17.60</td>\n",
       "      <td>157725.97</td>\n",
       "      <td>0.88</td>\n",
       "      <td>5.02</td>\n",
       "      <td>5.40</td>\n",
       "      <td>-81.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-04-07</th>\n",
       "      <td>100</td>\n",
       "      <td>17.98</td>\n",
       "      <td>17.54</td>\n",
       "      <td>16.50</td>\n",
       "      <td>122471.85</td>\n",
       "      <td>0.88</td>\n",
       "      <td>5.28</td>\n",
       "      <td>4.19</td>\n",
       "      <td>-82.46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-30</th>\n",
       "      <td>100</td>\n",
       "      <td>16.63</td>\n",
       "      <td>16.42</td>\n",
       "      <td>15.99</td>\n",
       "      <td>85090.45</td>\n",
       "      <td>0.65</td>\n",
       "      <td>4.12</td>\n",
       "      <td>2.91</td>\n",
       "      <td>-83.58</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>160 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27   100  25.88  24.16  23.53   95578.03          0.63      2.68   \n",
       "2018-02-26   222  23.78  23.53  22.80   60985.11          0.69      3.02   \n",
       "2018-02-23   100  23.37  22.82  22.71   52914.01          0.54      2.42   \n",
       "2018-02-14   100  21.99  21.92  21.48   23331.04          0.44      2.05   \n",
       "2018-02-12   100  21.40  21.19  20.63   32445.39          0.82      4.03   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-04-13   100  21.30  21.13  19.50  171822.69          1.70      8.75   \n",
       "2015-04-09   100  19.89  19.62  18.02  183119.05          1.20      6.51   \n",
       "2015-04-08   100  18.53  18.42  17.60  157725.97          0.88      5.02   \n",
       "2015-04-07   100  17.98  17.54  16.50  122471.85          0.88      5.28   \n",
       "2015-03-30   100  16.63  16.42  15.99   85090.45          0.65      4.12   \n",
       "\n",
       "            turnover  m_price_change  \n",
       "2018-02-27      2.39          -75.84  \n",
       "2018-02-26      1.53         -198.47  \n",
       "2018-02-23      1.32          -77.18  \n",
       "2018-02-14      0.58          -78.08  \n",
       "2018-02-12      0.81          -78.81  \n",
       "...              ...             ...  \n",
       "2015-04-13      5.88          -78.87  \n",
       "2015-04-09      6.27          -80.38  \n",
       "2015-04-08      5.40          -81.58  \n",
       "2015-04-07      4.19          -82.46  \n",
       "2015-03-30      2.91          -83.58  \n",
       "\n",
       "[160 rows x 9 columns]"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 完成一个多逻辑判断，筛选p_change > 2 且 low > 15的日期数据\n",
    "data[(data['p_change'] > 2) & (data['low'] > 15)]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bd6a9bcd-c66c-4e2b-a9e2-ce0bfdacbc6c",
   "metadata": {},
   "source": [
    "#### 逻辑运算函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "80517933-2a02-4e99-9283-8d0f74e43cc2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "      <th>m_price_change</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>100</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.39</td>\n",
       "      <td>-75.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>222</td>\n",
       "      <td>23.78</td>\n",
       "      <td>23.53</td>\n",
       "      <td>22.80</td>\n",
       "      <td>60985.11</td>\n",
       "      <td>0.69</td>\n",
       "      <td>3.02</td>\n",
       "      <td>1.53</td>\n",
       "      <td>-198.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>100</td>\n",
       "      <td>23.37</td>\n",
       "      <td>22.82</td>\n",
       "      <td>22.71</td>\n",
       "      <td>52914.01</td>\n",
       "      <td>0.54</td>\n",
       "      <td>2.42</td>\n",
       "      <td>1.32</td>\n",
       "      <td>-77.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>100</td>\n",
       "      <td>21.99</td>\n",
       "      <td>21.92</td>\n",
       "      <td>21.48</td>\n",
       "      <td>23331.04</td>\n",
       "      <td>0.44</td>\n",
       "      <td>2.05</td>\n",
       "      <td>0.58</td>\n",
       "      <td>-78.08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-12</th>\n",
       "      <td>100</td>\n",
       "      <td>21.40</td>\n",
       "      <td>21.19</td>\n",
       "      <td>20.63</td>\n",
       "      <td>32445.39</td>\n",
       "      <td>0.82</td>\n",
       "      <td>4.03</td>\n",
       "      <td>0.81</td>\n",
       "      <td>-78.81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-04-13</th>\n",
       "      <td>100</td>\n",
       "      <td>21.30</td>\n",
       "      <td>21.13</td>\n",
       "      <td>19.50</td>\n",
       "      <td>171822.69</td>\n",
       "      <td>1.70</td>\n",
       "      <td>8.75</td>\n",
       "      <td>5.88</td>\n",
       "      <td>-78.87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-04-09</th>\n",
       "      <td>100</td>\n",
       "      <td>19.89</td>\n",
       "      <td>19.62</td>\n",
       "      <td>18.02</td>\n",
       "      <td>183119.05</td>\n",
       "      <td>1.20</td>\n",
       "      <td>6.51</td>\n",
       "      <td>6.27</td>\n",
       "      <td>-80.38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-04-08</th>\n",
       "      <td>100</td>\n",
       "      <td>18.53</td>\n",
       "      <td>18.42</td>\n",
       "      <td>17.60</td>\n",
       "      <td>157725.97</td>\n",
       "      <td>0.88</td>\n",
       "      <td>5.02</td>\n",
       "      <td>5.40</td>\n",
       "      <td>-81.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-04-07</th>\n",
       "      <td>100</td>\n",
       "      <td>17.98</td>\n",
       "      <td>17.54</td>\n",
       "      <td>16.50</td>\n",
       "      <td>122471.85</td>\n",
       "      <td>0.88</td>\n",
       "      <td>5.28</td>\n",
       "      <td>4.19</td>\n",
       "      <td>-82.46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-30</th>\n",
       "      <td>100</td>\n",
       "      <td>16.63</td>\n",
       "      <td>16.42</td>\n",
       "      <td>15.99</td>\n",
       "      <td>85090.45</td>\n",
       "      <td>0.65</td>\n",
       "      <td>4.12</td>\n",
       "      <td>2.91</td>\n",
       "      <td>-83.58</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>160 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27   100  25.88  24.16  23.53   95578.03          0.63      2.68   \n",
       "2018-02-26   222  23.78  23.53  22.80   60985.11          0.69      3.02   \n",
       "2018-02-23   100  23.37  22.82  22.71   52914.01          0.54      2.42   \n",
       "2018-02-14   100  21.99  21.92  21.48   23331.04          0.44      2.05   \n",
       "2018-02-12   100  21.40  21.19  20.63   32445.39          0.82      4.03   \n",
       "...          ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-04-13   100  21.30  21.13  19.50  171822.69          1.70      8.75   \n",
       "2015-04-09   100  19.89  19.62  18.02  183119.05          1.20      6.51   \n",
       "2015-04-08   100  18.53  18.42  17.60  157725.97          0.88      5.02   \n",
       "2015-04-07   100  17.98  17.54  16.50  122471.85          0.88      5.28   \n",
       "2015-03-30   100  16.63  16.42  15.99   85090.45          0.65      4.12   \n",
       "\n",
       "            turnover  m_price_change  \n",
       "2018-02-27      2.39          -75.84  \n",
       "2018-02-26      1.53         -198.47  \n",
       "2018-02-23      1.32          -77.18  \n",
       "2018-02-14      0.58          -78.08  \n",
       "2018-02-12      0.81          -78.81  \n",
       "...              ...             ...  \n",
       "2015-04-13      5.88          -78.87  \n",
       "2015-04-09      6.27          -80.38  \n",
       "2015-04-08      5.40          -81.58  \n",
       "2015-04-07      4.19          -82.46  \n",
       "2015-03-30      2.91          -83.58  \n",
       "\n",
       "[160 rows x 9 columns]"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用query函数，筛选p_change > 2 且 low > 15的日期数据\n",
    "data.query(\"p_change > 2 & low > 15\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "7ba6f336-5dc7-4082-8e32-19df278a005f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "      <th>m_price_change</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>100</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.39</td>\n",
       "      <td>-75.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-07-25</th>\n",
       "      <td>100</td>\n",
       "      <td>24.20</td>\n",
       "      <td>23.70</td>\n",
       "      <td>22.64</td>\n",
       "      <td>167489.48</td>\n",
       "      <td>0.67</td>\n",
       "      <td>2.91</td>\n",
       "      <td>4.19</td>\n",
       "      <td>-76.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-09-28</th>\n",
       "      <td>100</td>\n",
       "      <td>20.98</td>\n",
       "      <td>20.86</td>\n",
       "      <td>19.71</td>\n",
       "      <td>95580.75</td>\n",
       "      <td>0.98</td>\n",
       "      <td>4.93</td>\n",
       "      <td>2.39</td>\n",
       "      <td>-79.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-04-07</th>\n",
       "      <td>100</td>\n",
       "      <td>17.98</td>\n",
       "      <td>17.54</td>\n",
       "      <td>16.50</td>\n",
       "      <td>122471.85</td>\n",
       "      <td>0.88</td>\n",
       "      <td>5.28</td>\n",
       "      <td>4.19</td>\n",
       "      <td>-82.46</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27   100  25.88  24.16  23.53   95578.03          0.63      2.68   \n",
       "2017-07-25   100  24.20  23.70  22.64  167489.48          0.67      2.91   \n",
       "2016-09-28   100  20.98  20.86  19.71   95580.75          0.98      4.93   \n",
       "2015-04-07   100  17.98  17.54  16.50  122471.85          0.88      5.28   \n",
       "\n",
       "            turnover  m_price_change  \n",
       "2018-02-27      2.39          -75.84  \n",
       "2017-07-25      4.19          -76.30  \n",
       "2016-09-28      2.39          -79.14  \n",
       "2015-04-07      4.19          -82.46  "
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 找到turnover字段的值为4.19或2.39的行\n",
    "data[data['turnover'].isin([4.19, 2.39])]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0b6faf53-5c0a-4506-a072-6a5f526640ae",
   "metadata": {},
   "source": [
    "### 4.3.3 统计运算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "d119fe6f-0ba3-492a-b930-9a74cfd19478",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "      <th>m_price_change</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>643.000000</td>\n",
       "      <td>643.000000</td>\n",
       "      <td>643.000000</td>\n",
       "      <td>643.000000</td>\n",
       "      <td>643.000000</td>\n",
       "      <td>643.000000</td>\n",
       "      <td>643.000000</td>\n",
       "      <td>643.000000</td>\n",
       "      <td>643.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>100.189736</td>\n",
       "      <td>21.900513</td>\n",
       "      <td>21.336267</td>\n",
       "      <td>20.771835</td>\n",
       "      <td>99905.519114</td>\n",
       "      <td>0.018802</td>\n",
       "      <td>0.190280</td>\n",
       "      <td>2.936190</td>\n",
       "      <td>-78.853468</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>4.811210</td>\n",
       "      <td>4.077578</td>\n",
       "      <td>3.942806</td>\n",
       "      <td>3.791968</td>\n",
       "      <td>73879.119354</td>\n",
       "      <td>0.898476</td>\n",
       "      <td>4.079698</td>\n",
       "      <td>2.079375</td>\n",
       "      <td>6.153025</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>100.000000</td>\n",
       "      <td>12.670000</td>\n",
       "      <td>12.360000</td>\n",
       "      <td>12.200000</td>\n",
       "      <td>1158.120000</td>\n",
       "      <td>-3.520000</td>\n",
       "      <td>-10.030000</td>\n",
       "      <td>0.040000</td>\n",
       "      <td>-198.470000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>100.000000</td>\n",
       "      <td>19.500000</td>\n",
       "      <td>19.045000</td>\n",
       "      <td>18.525000</td>\n",
       "      <td>48533.210000</td>\n",
       "      <td>-0.390000</td>\n",
       "      <td>-1.850000</td>\n",
       "      <td>1.360000</td>\n",
       "      <td>-80.990000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>100.000000</td>\n",
       "      <td>21.970000</td>\n",
       "      <td>21.450000</td>\n",
       "      <td>20.980000</td>\n",
       "      <td>83175.930000</td>\n",
       "      <td>0.050000</td>\n",
       "      <td>0.260000</td>\n",
       "      <td>2.500000</td>\n",
       "      <td>-78.560000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>100.000000</td>\n",
       "      <td>24.065000</td>\n",
       "      <td>23.415000</td>\n",
       "      <td>22.850000</td>\n",
       "      <td>127580.055000</td>\n",
       "      <td>0.455000</td>\n",
       "      <td>2.305000</td>\n",
       "      <td>3.915000</td>\n",
       "      <td>-76.615000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>222.000000</td>\n",
       "      <td>36.350000</td>\n",
       "      <td>35.210000</td>\n",
       "      <td>34.010000</td>\n",
       "      <td>501915.410000</td>\n",
       "      <td>3.030000</td>\n",
       "      <td>10.030000</td>\n",
       "      <td>12.560000</td>\n",
       "      <td>-64.790000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             open        high       close         low         volume  \\\n",
       "count  643.000000  643.000000  643.000000  643.000000     643.000000   \n",
       "mean   100.189736   21.900513   21.336267   20.771835   99905.519114   \n",
       "std      4.811210    4.077578    3.942806    3.791968   73879.119354   \n",
       "min    100.000000   12.670000   12.360000   12.200000    1158.120000   \n",
       "25%    100.000000   19.500000   19.045000   18.525000   48533.210000   \n",
       "50%    100.000000   21.970000   21.450000   20.980000   83175.930000   \n",
       "75%    100.000000   24.065000   23.415000   22.850000  127580.055000   \n",
       "max    222.000000   36.350000   35.210000   34.010000  501915.410000   \n",
       "\n",
       "       price_change    p_change    turnover  m_price_change  \n",
       "count    643.000000  643.000000  643.000000      643.000000  \n",
       "mean       0.018802    0.190280    2.936190      -78.853468  \n",
       "std        0.898476    4.079698    2.079375        6.153025  \n",
       "min       -3.520000  -10.030000    0.040000     -198.470000  \n",
       "25%       -0.390000   -1.850000    1.360000      -80.990000  \n",
       "50%        0.050000    0.260000    2.500000      -78.560000  \n",
       "75%        0.455000    2.305000    3.915000      -76.615000  \n",
       "max        3.030000   10.030000   12.560000      -64.790000  "
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算平均值（mean）、标准差（std）、最大值（max）、最小值（min）、个数（count）、25%分位值、50%分位（中位数）值、75%分位值\n",
    "data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "74b8133e-d7a2-4391-abec-f123af667e13",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open                 222.00\n",
       "high                  36.35\n",
       "close                 35.21\n",
       "low                   34.01\n",
       "volume            501915.41\n",
       "price_change           3.03\n",
       "p_change              10.03\n",
       "turnover              12.56\n",
       "m_price_change       -64.79\n",
       "dtype: float64"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取每一列的最大值\n",
    "data.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "c7e292ba-d707-4f4d-a8b7-ee9daf45be86",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2018-02-27     95578.03\n",
       "2018-02-26     60985.11\n",
       "2018-02-23     52914.01\n",
       "2018-02-22     36105.01\n",
       "2018-02-14     23331.04\n",
       "                ...    \n",
       "2015-03-06    179831.72\n",
       "2015-03-05     93180.39\n",
       "2015-03-04     67075.44\n",
       "2015-03-03    139071.61\n",
       "2015-03-02     96291.73\n",
       "Length: 643, dtype: float64"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取每一行的最大值\n",
    "data.max(axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "ac21ae5e-16a1-402c-b1d3-cdc959660d5d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open               100.00\n",
       "high                12.67\n",
       "close               12.36\n",
       "low                 12.20\n",
       "volume            1158.12\n",
       "price_change        -3.52\n",
       "p_change           -10.03\n",
       "turnover             0.04\n",
       "m_price_change    -198.47\n",
       "dtype: float64"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取最小值\n",
    "data.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "860782cc-26be-455c-9317-7dfb18d1a010",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open                  4.811210\n",
       "high                  4.077578\n",
       "close                 3.942806\n",
       "low                   3.791968\n",
       "volume            73879.119354\n",
       "price_change          0.898476\n",
       "p_change              4.079698\n",
       "turnover              2.079375\n",
       "m_price_change        6.153025\n",
       "dtype: float64"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取每一列的标准差\n",
    "data.std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "781d0193-db98-4b25-a5e6-5fbbd02abb08",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open              2.314774e+01\n",
       "high              1.662665e+01\n",
       "close             1.554572e+01\n",
       "low               1.437902e+01\n",
       "volume            5.458124e+09\n",
       "price_change      8.072595e-01\n",
       "p_change          1.664394e+01\n",
       "turnover          4.323800e+00\n",
       "m_price_change    3.785971e+01\n",
       "dtype: float64"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取每一列的方差\n",
    "data.var()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "0fca3c05-b2c1-446e-b1e5-d5497cb53c33",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open                100.00\n",
       "high                 21.97\n",
       "close                21.45\n",
       "low                  20.98\n",
       "volume            83175.93\n",
       "price_change          0.05\n",
       "p_change              0.26\n",
       "turnover              2.50\n",
       "m_price_change      -78.56\n",
       "dtype: float64"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取每一列的中位数\n",
    "data.median()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "5f2d7b89-f4e0-40ab-a0fa-c952ea5e0d23",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open              2018-02-26\n",
       "high              2015-06-10\n",
       "close             2015-06-12\n",
       "low               2015-06-12\n",
       "volume            2017-10-26\n",
       "price_change      2015-06-09\n",
       "p_change          2015-08-28\n",
       "turnover          2017-10-26\n",
       "m_price_change    2015-06-12\n",
       "dtype: object"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 求每一列最大值的位置（行索引）\n",
    "data.idxmax()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "3e66c7aa-e5fd-43b9-b34f-dd33a9a45dfc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open              2018-02-27\n",
       "high              2015-03-02\n",
       "close             2015-09-02\n",
       "low               2015-03-02\n",
       "volume            2016-07-06\n",
       "price_change      2015-06-15\n",
       "p_change          2015-09-01\n",
       "turnover          2016-07-06\n",
       "m_price_change    2018-02-26\n",
       "dtype: object"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 求每一列最小值的位置（行索引）\n",
    "data.idxmin()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2ed08329-1448-4bd8-a673-2c7530ea8c0f",
   "metadata": {},
   "source": [
    "### 4.3.4 累计统计函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "8e84891b-b930-49af-b9e9-4129915ac206",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2015-03-02      2.62\n",
       "2015-03-03      4.06\n",
       "2015-03-04      5.63\n",
       "2015-03-05      7.65\n",
       "2015-03-06     16.16\n",
       "               ...  \n",
       "2018-02-14    112.59\n",
       "2018-02-22    114.23\n",
       "2018-02-23    116.65\n",
       "2018-02-26    119.67\n",
       "2018-02-27    122.35\n",
       "Name: p_change, Length: 643, dtype: float64"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# p_change数据的每天累加结果\n",
    "data['p_change'].sort_index().cumsum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "1e94c29c-3c00-4671-bd01-bab1ce4fc3f4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用折线图绘制累加数据\n",
    "data['p_change'].sort_index().cumsum().plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "a1c1d2e9-67f5-44ee-bc6c-f344247de05f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2015-03-02     2.62\n",
       "2015-03-03     2.62\n",
       "2015-03-04     2.62\n",
       "2015-03-05     2.62\n",
       "2015-03-06     8.51\n",
       "              ...  \n",
       "2018-02-14    10.03\n",
       "2018-02-22    10.03\n",
       "2018-02-23    10.03\n",
       "2018-02-26    10.03\n",
       "2018-02-27    10.03\n",
       "Name: p_change, Length: 643, dtype: float64"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算截止每一天的累计最大值，即从顶部开始逐行遍历，将每列的值替换为当前行及之前行的最大值。\n",
    "data['p_change'].sort_index().cummax()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "f4567918-079b-4ae8-a28c-a94be0738639",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2015-03-02     2.62\n",
       "2015-03-03     1.44\n",
       "2015-03-04     1.44\n",
       "2015-03-05     1.44\n",
       "2015-03-06     1.44\n",
       "              ...  \n",
       "2018-02-14   -10.03\n",
       "2018-02-22   -10.03\n",
       "2018-02-23   -10.03\n",
       "2018-02-26   -10.03\n",
       "2018-02-27   -10.03\n",
       "Name: p_change, Length: 643, dtype: float64"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算截止每一天的累计最小值，将每列的值替换为最小值，最后一行仅包含每列中的最小值。\n",
    "data['p_change'].sort_index().cummin()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "cd6c3d33-8089-4891-9ab0-ca85b2939173",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2015-03-02      2.620000\n",
       "2015-03-03      3.772800\n",
       "2015-03-04      5.923296\n",
       "2015-03-05     11.965058\n",
       "2015-03-06    101.822643\n",
       "                 ...    \n",
       "2018-02-14     -0.000000\n",
       "2018-02-22     -0.000000\n",
       "2018-02-23     -0.000000\n",
       "2018-02-26     -0.000000\n",
       "2018-02-27     -0.000000\n",
       "Name: p_change, Length: 643, dtype: float64"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算截止每一天的累积乘积\n",
    "data['p_change'].sort_index().cumprod()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0f76fc82-f4ca-42e4-be24-848f71c0d977",
   "metadata": {},
   "source": [
    "### 4.3.5 自定义运算"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "419b43cd-ba87-4bf8-8175-93009a03905e",
   "metadata": {},
   "source": [
    "> 使用apply(func, axis)方法实现自定义逻辑的运算功能，其中func是自定义的运算函数（可以是单独定义的函数，也可以是lambda函数），axis是按列计算（axis不传或传0）或按行计算（axis传1）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "18083667-f034-491f-934e-a6df1a1eb5b7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open                 122.00\n",
       "high                  23.68\n",
       "close                 22.85\n",
       "low                   21.81\n",
       "volume            500757.29\n",
       "price_change           6.55\n",
       "p_change              20.06\n",
       "turnover              12.52\n",
       "m_price_change       133.68\n",
       "dtype: float64"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 每一列的最大值与最小值之差\n",
    "data.apply(lambda x: x.max()-x.min())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "f0b2c57e-bee5-47f0-8886-62ec547ed9c7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(500757.29)"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 验证一下上面的计算结果是否正确，以volume为例\n",
    "data['volume'].max() - data['volume'].min()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "07b0162a-f454-40c7-a770-60e02152b500",
   "metadata": {},
   "source": [
    "## 4.4 Pandas画图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "24587cba-ed9a-4dab-bde8-9ecbbaaead62",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "      <th>m_price_change</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>100</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.39</td>\n",
       "      <td>-75.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>222</td>\n",
       "      <td>23.78</td>\n",
       "      <td>23.53</td>\n",
       "      <td>22.80</td>\n",
       "      <td>60985.11</td>\n",
       "      <td>0.69</td>\n",
       "      <td>3.02</td>\n",
       "      <td>1.53</td>\n",
       "      <td>-198.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>100</td>\n",
       "      <td>23.37</td>\n",
       "      <td>22.82</td>\n",
       "      <td>22.71</td>\n",
       "      <td>52914.01</td>\n",
       "      <td>0.54</td>\n",
       "      <td>2.42</td>\n",
       "      <td>1.32</td>\n",
       "      <td>-77.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>100</td>\n",
       "      <td>22.76</td>\n",
       "      <td>22.28</td>\n",
       "      <td>22.02</td>\n",
       "      <td>36105.01</td>\n",
       "      <td>0.36</td>\n",
       "      <td>1.64</td>\n",
       "      <td>0.90</td>\n",
       "      <td>-77.72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>100</td>\n",
       "      <td>21.99</td>\n",
       "      <td>21.92</td>\n",
       "      <td>21.48</td>\n",
       "      <td>23331.04</td>\n",
       "      <td>0.44</td>\n",
       "      <td>2.05</td>\n",
       "      <td>0.58</td>\n",
       "      <td>-78.08</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low    volume  price_change  p_change  \\\n",
       "2018-02-27   100  25.88  24.16  23.53  95578.03          0.63      2.68   \n",
       "2018-02-26   222  23.78  23.53  22.80  60985.11          0.69      3.02   \n",
       "2018-02-23   100  23.37  22.82  22.71  52914.01          0.54      2.42   \n",
       "2018-02-22   100  22.76  22.28  22.02  36105.01          0.36      1.64   \n",
       "2018-02-14   100  21.99  21.92  21.48  23331.04          0.44      2.05   \n",
       "\n",
       "            turnover  m_price_change  \n",
       "2018-02-27      2.39          -75.84  \n",
       "2018-02-26      1.53         -198.47  \n",
       "2018-02-23      1.32          -77.18  \n",
       "2018-02-22      0.90          -77.72  \n",
       "2018-02-14      0.58          -78.08  "
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "170e453c-d27c-4d6d-a132-634d25885935",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: xlabel='p_change', ylabel='turnover'>"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAGxCAYAAAB4AFyyAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAbN9JREFUeJztnQeYFdXZx99detulo3QQRKWjgIJGUIMaGxo1EgyIiIlgRfMpGlssqFFjRIINEQKSaKJoTOyhqCgdBZUmVRBpsksvy/2e98Csc2ennOln5v5/z3Of3Tu3nZlz5pz3vDUvk8lkCAAAAAAggeTH3QAAAAAAAK9AkAEAAABAYoEgAwAAAIDEAkEGAAAAAIkFggwAAAAAEgsEGQAAAAAkFggyAAAAAEgsEGQAAAAAkFjKU8o5dOgQbdiwgWrUqEF5eXlxNwcAAAAAEnC+3h07dlDDhg0pPz8/dwUZFmKaNGkSdzMAAAAA4IF169ZR48aNc1eQYU2MdiEKCgribg4AAAAAJCguLhaKCG0dz1lBRjMnsRADQQYAAABIFk5uIXD2BQAAAEBigSADAAAAgMQCQQYAAAAAiQWCDAAAAAASCwQZAAAAACQWCDIAAAAASCwQZAAAAACQWCDIAAAAACCxQJABAAAAQGKBIAMAAACAxJL6EgUAAABALrNy805as203Na9TjVrUrUZpA4IMAAAAkEK2795PN05eSDOWby499rPW9WhUv85UWLUCpQWYlgAAAIAUcuPkhfTpii1Zx/j5DZMXUJqAIAMAAACk0Jw0Y/lmKslkso7zcz6+assuSgsQZAAAAICUsWbbbtvXV2+FIAMAAAAARWlWu6rt6+z4mxYgyAAAAAApo2W96sKxt1xeXtZxfs7H0xS9BEEGAAAASCGj+nWmnq3qZh3j53w8TSD8GgAAAEghhVUr0ITB3YRjL/vEII8MAAAAABJHi7rpFGA0YFoCAAAAQGKBIAMAAACAxAJBBgAAAACJBYIMAAAAABJLrILMjBkz6IILLqCGDRtSXl4eTZkypfS1AwcO0O23307t27enatWqifcMGDCANmzYEGeTAQAAAKAQsQoyu3btoo4dO9Lo0aPLvLZ7926aP38+3X333eLv66+/TkuXLqULL7wwlrYCAAAAQD3yMhlDRamYYI3MG2+8QX379rV8z5w5c6hbt260Zs0aatq0qdT3FhcXU2FhIRUVFVFBQUGALQYAAABAWMiu34nykeGTYYGnZs2acTcFAAAAAAqQmIR4e/fuFT4z/fr1s5XM9u3bJx56iQ4AAAAA6SQRGhl2/L388suJrWBjxoyxfe/IkSOFKkp7NGnSJLJ2AgAAACBa8pMixLBfzAcffODo5zJixAhhgtIe69ati6ytAAAAAIiW8kkQYpYvX05Tp06lOnXqOH6mUqVK4gEAAACA9BOrILNz505asWJF6fNVq1bRwoULqXbt2nT00UfTpZdeKkKv3377bSopKaGNGzeK9/HrFStWjLHlAAAAAKBcD7+eNm0a9e7du8zxgQMH0n333UctWrQw/RxrZ3r16iX1Gwi/BgCAZLBy805as203Na+T7mrNgAJdv2PVyLAwYidHKZLiBgAAQIhs372fbpy8kGYs31x67Get69Gofp2psGqFWNsG1Ed5Z18AAADphoWYT1dsyTrGz2+YvCC2NoHkAEEGAABArOYk1sSUGDTw/JyPr9qyi5JwDlOXbkpEW9OI0lFLAAAA0g37xNixeusuZf1lYBJTA2hkAAAAxEaz2lVtX2fHX1WBSUwNIMgAAACIjZb1qgstRrm8vKzj/JyPq6qNSYNJLC1AkAEAABArbIrp2apu1jF+zseTbBID0QAfGQAAALHC/iQTBncTWgwWAJKQRybJJrG0AUEGAACAErDworoAYzSJsU+M3rzEJjHWJiXlPNIATEsAAABAjpjE0gg0MgAAAECOmMTSCAQZAAAAIEdMYmkEpiUAAAAAJBYIMgAAAABILBBkAAAAAJBYIMgAAAAAILFAkAEAAABAYoEgAwAAAIDEgvBrn0XDuN4GcgcAAAAA8QBBxgPbd+8X5du5wqkGp6rmbI6cIAkAAAAA0QDTkgdYiOH6Gnr4+Q2TF8TWJgAAACAXgSDjwZzEmhh9kTCGn/NxTlUNAAAAgGiAIOMS9omxg+ttAAAAACAaIMi4pFntqravs+MvAAAAAKIBgoxLWtarLhx7y+XlZR3n53wc0UsAAABAdECQ8QBHJ/VsVTfrGD/n4wAAAACIDoRfe4BDrCcM7iYce9knBnlkAAAAgHiAIOMDFl4gwAAAAADxAUEGAABA5CAzOggKCDIAAAAiA5nRQdDA2RcAAEBkIDN6+jRrU5duijUZLDQyAAAAIs2MbkSfGR1mpmSwXSHNGjQyAAAAIgGZ0dPDjQpp1iDIAAAAiARkRk8HKxWrOQhBBgAAQCQgM3o6WKOYZg2CDAAAgMhAZvTk00wxzRqcfQEAAESWDwaZ0dOjWft0xZYs8xJr1lgojbo/IcgAAACIPGoFmdGTzah+nYVjr77/49Ks5WUyBm+dlFFcXEyFhYVUVFREBQUFcTcHAABSwYCxsy135KxxAbnBqhA1a7LrNzQyAAAAXIF8MEAlzRqcfQEAACQ6agXkNhBkAAAAJDpqBeQ2EGQAAAC4AvlggEpAkAEAAOAa5IMBqhCrIDNjxgy64IILqGHDhpSXl0dTpkzJep0Dqu655x46+uijqUqVKnTWWWfR8uXLY2svAACA7HwwU2/rReMGdRV/+XnUBQMBiFWQ2bVrF3Xs2JFGjx5t+vpjjz1GTz/9ND377LM0a9YsqlatGp199tm0d+/eyNsKAACgLGxG6t2mPsxJIDZiDb8+99xzxcMM1sY89dRT9Ic//IEuuugicWzChAnUoEEDobm54oorIm4tAAAAAFRDWR+ZVatW0caNG4U5SYMT43Tv3p0+++wzy8/t27dPJNHRPwAAAACQTpQVZFiIYVgDo4efa6+ZMXLkSCHwaI8mTZqE3lYAAAAAxIOygoxXRowYIdIZa49169bF3SQAAAAA5Jogc9RRR4m/P/zwQ9Zxfq69ZkalSpVETQb9AwAAAADpRFlBpkWLFkJg+eijj0qPsb8LRy+dcsopsbYNAAAAAGoQa9TSzp07acWKFVkOvgsXLqTatWtT06ZN6eabb6YHH3yQWrduLQSbu+++W+Sc6du3b5zNBgAAAIAixCrIzJ07l3r37l36fPjw4eLvwIED6eWXX6b/+7//E7lmrr32Wtq+fTudeuqp9O6771LlypVjbDUAAAAAVCEvwwlbUgybozh6iR1/4S8DAAAApGv9VtZHBgAAAADACQgyAAAAAEgsEGQAAAAAkFhidfYFAAAAVGDl5p20Zttual6nGgpgJgwIMgAAAHKW7bv3042TF9KM5ZtLj/2sdT0a1a8zFVatEGvbgBwwLQEAAMhZWIj5dMWWrGP8/IbJC2JrE3AHBBkAAAA5a05iTUyJIQsJP+fjq7bsiq1tQB4IMgAAAHIS9omxY/XWXZYC0NSlmyDoKAJ8ZAAAAOQkzWpXtX2dHX/1wJ9GTaCRAQAAkJO0rFddCCLl8vKyjvNzPm6MXoI/jZpAkAEAAJCzsDalZ6u6Wcf4OR/XA38adYFpCQAAfIIcJMmFTUITBncTggj7xFj1oYw/Dfo+HiDIAACAR+AzkR5YCLETRNz604DogGkJAAA8Ap+J3MGtPw2IDggyAADgAfhM5B5m/jTHN6xBt519bGxtAhBkAAAg0hwkIPn+NG8O60HtGhaIY4vXF9OFz3xKA8bOpqLdB0rfi1wz0QEfGQAA8AB8JnKXJ95fTt98v8PUpPh0v07wm4oYaGQAAMAD8JnITZxMikPGz4XfVMRAkAEAgJBzkIDcMSnOWfMj/KYiBqYlAAAIOQcJyB2Toh3INRMO0MgAAIBPeHHq3aY+FqkcNyl2bV4r5/ymVirg1AyNDAAAAOACNh2yz4veoVczKfJx9onRm5dYyOHX0yToblcoGWReJmMw5qWM4uJiKiwspKKiIiooOBwuBwAAAPjFzKTIIdhGISeNUUsDxs62FNjY3Brl+g2NDAAAABBQWYNc8JtaeSRyy4jeqTnKc4YgAwAAAERcuynJrFGsgCacfQEAAACQ2GSQEGQAAAAAkNhkkBBkAAAAAJDYZJDwkQEAABC5syj7Wdg5wsq8B8SHSk7NEGQAAAAok3tEpfwkIBlOzTAtAQAAiAQWUJwKKsq8BwA90MgAoDhQsYNcyT3C+VlVyk8CkgEEGQAUBSp2kGu5R5xA0UVgBkxLACgKVOwg13KPqJafBCQDCDIAKKyG19cxMarYQfJRoXKwSrlHVMtPApIBBBkAUqqGB2qbDbno3hlPTKdB4+ZQ78eniedccDDXc4+olJ8EJAP4yACgIFCx567ZMKjKwUnNPaJSfhKQDCDIAKAgmoqdFze9eYlV7Lw7xcSeXFSrHKxq7hG/+UkQ7Zc7QJABQFFYlc47dP2iBxV78lGtcnDaQLRf7gFBBgBFgYo9ncBsGC65arbLZeDsC4DisPDSu019CDEpAZE54YFov9wEggwAAEQMInPCAdF+uQlMSwAAEDEwG4YDzHa5idIamZKSErr77rupRYsWVKVKFTrmmGPogQceEPU4AAAg6QnlYDYMFpjtchOlNTKPPvoojRkzhsaPH09t27aluXPn0qBBg6iwsJBuvPHGuJsHAIgJRKYAKxDtl3vkZRRWb5x//vnUoEEDGjt2bOmxX/7yl0I7M3HiRKnvKC4uFoJPUVERFRQUhNhaAEBUcBZcqxw7iEwBDMx2yUd2/VbatNSjRw/66KOPaNmyZeL5F198QZ988gmde+65lp/Zt2+fOHn9AwCQHhCZAmSA2S53UNq0dMcddwhB5LjjjqNy5coJn5mHHnqI+vfvb/mZkSNH0v333x9pO0G0IGNnboOEcgCAxAgyr776Kk2aNIleeeUV4SOzcOFCuvnmm6lhw4Y0cOBA08+MGDGChg8fXvqcBaEmTZqE0j4sqNECvwjAIDIFBA3m8mSjtCDz+9//XmhlrrjiCvG8ffv2tGbNGqF1sRJkKlWqJB5hggU1HpCxEzCoQwWCAnN5OlDaR2b37t2Un5/dRDYxHTp0iFRdUEE4wC8C6EFCORAEmMvTgdIamQsuuED4xDRt2lSYlhYsWEBPPvkkXX311bG1CZVr4wF+EUAPEsoBv2AuTw9KCzKjRo0SCfGGDh1KmzZtEr4xv/3tb+mee+6JrU1YUOMBfhHADL7XcL8BL2AuTw9KCzI1atSgp556SjxUAQtqPMAvAgAQJJjL04PSPjIqghTY8QG/CABAUKRhLk96iY6cyOwbBGFk9i3afaBMCmx4ukcH37Sfr9xKPP10b1knERMOAEA9kjqX50q0VbHk+g1BxgdwNIyeXLmBgfog90h6SNpcnislOool12+lfWRUB46G0YNcMiBuIEynjyTN5Yi2Kgt8ZEBiQC4ZoALIPQJUj7bKNSDIgMSAGxjEDYRpEDeItioLBBmQGHADg7iBMJ1OkhT9k4Zoq6CBjwxIDMglA+IGwnS6SKq/E7fPGG3VM4dTUSBqCSSKpIZLgvSQKxEjuUDS+zJp0VZuQfj1ESDIpJO038BAXSBMpyMMndt9xhPTLV+feluvRJ1PGkH4NUg1UYZLJnWiBuGAgpXJNstooNZSenAlyBw8eJAefvhhUX26cePG4bUKAAVI+kQNwiVJuUfizOmk6kYA/k45GrVUvnx5+tOf/iQEGgDSDvKFAOA9DJ03AuyDwuabQePmUO/Hp4nnbJpTAUT/5HD49RlnnEHTp1vbFQFIA8gXAoA/s0wSNgIoRJsOXPvInHvuuXTHHXfQokWL6MQTT6Rq1bKl1gsvvDDI9gGQWPu5qir1JIFrqCZOZhnWaiQhjT78nXJUkBk6dKj4++STT5Z5LS8vj0pKSoJpGQAJtZ/Dt8Y/uIbJzulk1GSq7kib6/5OOWdaOnTokOUDQkx6SFKmS9Xs50lQqasOrqH62Jll4EibO6xUYK3wFX69d+9eqly5MuUqaVR7YyfsL3smKtP6B9cwGdiZZfg1ZOFON9sVWitcCzKsdeEQ7GeffZZ++OEHWrZsGbVs2ZLuvvtuat68OQ0ePJjSjkodGFdIZS7gxX6O3BT+wTVMFlZmGaTRTzdDJ82nmd9uzTrGfX3dpHn0ypCT1TYtPfTQQ/Tyyy/TY489RhUrViw93q5dO3rxxRcpF0ir2huROubwJN27TX2pxRMqdf/gGqZrI8AZcscN6ir+8vOkb/YA0RfrfiwjxGjw8ajXCteCzIQJE+j555+n/v37U7ly5UqPd+zYkZYsWUJpJ82LPSr7+ge5KfyDa5i7GwGQDG577Uvb12etNBdylBFk1q9fT61atSpznJ19DxxQI9FRmKR5scdOOBiQm8I/uIYAqLuZX75pp+17oi7g6NpH5oQTTqCPP/6YmjVrlnX8n//8J3XunP5JJs2LvVNIJXZUciA3hX8HeVxDAJK5mWdOblmHlBZk7rnnHho4cKDQzLAW5vXXX6elS5cKk9Pbb79NaYcX+1pVK9CPJmm2+XjSJ1s46AUHclP4d5DHNQQgWZv5zo0LI79n8zIZh8xFJrBG5o9//CN98cUXtHPnTurSpYsQcPr06UNJLQMuS66UfsdOGAQJ19ix0vTlWjQcAOm4nzdTSabsZn7abb0Dc+iWXb895ZE57bTT6IMPPqBcJFdCQ7ETBkGBvDAApItRJpr7rs1r0YsDusYSleZakLnmmmvoyiuvpF69elEukmYfmTSTxuSFSSFXhH8AcoVCnQ/b5yu3EscXdm9ZJ7bQeteCzObNm+mcc86hevXq0RVXXCHCsDt16kS5Ahxik0WakxcmBQj/AKRzbr33za+UmFtdh1+/+eab9P3334tMvnPmzBEVsNu2bSuy/a5evZpyAYSGJoe0Ji9MEsgLA9JaP0iFOkNxodLc6snZV893331HkydPppdeeomWL19OBw8epDQ7++qBQ6za5IpjdhIo2n2gjE0dmjF1gOnVnQY31zW9KyOaW0N19tXgBHhz586lWbNmCW1MgwYNKJeAQ6zawDdDrcVRlbwwWLQppxZkN/0tW2su12vSrVFsbvUkyEydOpVeeeUV+te//iVyyVxyySUih8wZZ5wRfAsBSLBvRi4umnaLY5zCfy4s2m5J84Lstr9lo+sQhUdKzK2+fGQaNWpEv/jFL2jLli2i5hJXwGaz0plnnkl5Bhs4ALnqm8GTKOdaYPXroHFzqPfj08RzNrGkHZVs50loV1ykuW6cl/6WLT+T5jI1SfV7cy3I3HfffcLZ94033qBLL72UKlWqFE7LQGqI0yEuLsfsNC6aMv2o6uKoarviJM0Lspf+ltUyqKaNiAuVgl5cm5aGDBmS5ejLNG7cONhWgVQQtypfM+vcf1Fb8Twq34y0qZ7d9KNqtnPV2xUnaV6QvfS3bGoNpOBQrx6aa40M+8RweQL2JObCkfyoWbMmPfDAA+I1AOLWSpiZdTjfQZcmtSK50dK203XTj6oujqq2S1XzwEnNaolxmlRNldf+ltUyqKSNiBueU3u3qR+rAOdaI3PXXXfR2LFj6ZFHHqGePXuKY5988okwOe3du5ceeughyiVy0ZlTda1EEA6Mfvo1TYum235UdbeqartUTDVfUKU8zV3zo9gEJNUh2m1/6+93GS2DStoI4EGQGT9+PL344ot04YUXlh7r0KGDcAIeOnRozggycZtNVCcuVb5fASqIfk3ToumlH1WtoK5qu+LEuCD/deoKmr9meyqimGT62ynCzgmk4EioILNt2zY67rjjyhznY/xarpDmsMUgiEsr4VeACqpfZSbRJGjzvPSjqrtVVdulAnwdODfqnNU/psa3S6a/MY/nqCDTsWNHeuaZZ+jpp5/OOs7H+LVcIG3OnGEQl1bCjwAVZL/aTaJJ0ub56UdVd6sqtUslYTatDtFW/R3VPB5WH6s0dhInyDz22GN03nnn0YcffkinnHKKOPbZZ5/RunXr6L///S/lAmm94dOgypdZeK0mgDD61WwSjWIXGOQkB5NM8KgozKbJt0uFeTysPlZx7CROkDn99NNp2bJlNHr0aFqyZIk4xpl92T+mYcOGlAvk2g2fNFW+1cL7YN+2IprJagKIol/D3gWGMcnBJBM8Kpo0rDYBGhz5l6bFMuz7Paw+VnHsxI3r8GuGBRZ26uUSBfx48MEHQxNi1q9fT1deeSXVqVOHqlSpQu3btxf1neJEtayGqhN1eJ628HLhsnGDuoq//PwPU76yDSOOol/DDs0OM+RdhTDLNKBycj6zsOK0JHQ0Eub9HlYfqzx2EifIbN++nd5//32aOHEiTZgwIesRJD/++KMI8a5QoQK988479PXXX9MTTzxBtWrVorhBHgH10S+8shNA2P0a5i4Qk1wyUDnPEG8C7rvwBNPX0jiOwrrfw+pjlcdOokxL//73v6l///60c+dOUVZbX1+J/x8wYEBgjXv00UepSZMmNG7cuNJjLVq0IBWAuj2d9vCw+zVMJ2j4biUD1U3TUY6juB1Ww7rfw+pj1cdOYjQyt956K1199dVCkGHNDGtNtEfQ4ddvvfUWnXTSSXTZZZdR/fr1qXPnzvTCCy+QSkDdngzcTgBh9mtYu0BMcsmoR6W6aTqKcaRaUdWg7/ew+lj1sRMXeRlOHuCCatWq0aJFi6hly5YUNpUrVxZ/hw8fLoSZOXPm0E033UTPPvssDRw40PQz+/btEw+N4uJiodUpKioSGiSQu/BEaaUJicNJLgytj2rnmCu4dbLmBdvokK5S5EnY4ygXxmlYfez0vStTFJbN6zeXQ3Jav10LMhyhdMUVV9Dll19OYVOxYkWhkZk5c2bpsRtvvFEINBzybQaXSrj//vvLHIcgA1RfPMI8x1v7tKZtuw+kYnJTEa8Ls6qm6TDvFV5oWRNjBTvnq3Qt/BJWHxu/d3sKw7JDE2S4zhIXjRw0aJCIIGJHXD360gV+4YKUP//5z0VJBI0xY8aIKCmOZjIDGhnghKqLRxjnWLtqBXri/eWeJ7c07e7CIs0Lcxj3CpvetDpOZnCkIZt5gDsGpFDLJSvIuHb2HTJkiPjLwowRdvYtKSmhoOCIpaVLl2Yd4xw2LOBYUalSJfEA6cfrIqtSZtew0M5Rm9zc5pxI4+4uLNLsZB3GvQJfruBZmePZ5l0LMocOHaKouOWWW6hHjx708MMPC1PW7Nmz6fnnnxcPkLukcZENQ/PhZ3JD0i15sDC7I01FVVWZF9akWJgOXJA5cOCASEq3cOFCateuHYVN165d6Y033qARI0YIDRCHXj/11FMi/BvkLmlaZMMUyrxObrm+u0v7wqyCuRBlL4KdF5rluDDtSpBhf5imTZsGaj5y4vzzzxcPANK4yIYplHmd3JK6u4tzgU7CwqySJhN5uIKdF1omTJiO3bR011130Z133kl/+9vfqHbt2uG0CgALkrrIxiGUeZ3ckra7U2GBTsLCrKImMxf81aKaF0bFIExzW2et2soesnRyyzqx9aVrQeaZZ56hFStWiNpK7HTLeWX0zJ8/P8j2AZDoRTZuoczL5Ja03Z1KC7TVwhy3OSdtmsw043VeKIxQmObNw9BJ82nmtyzE/MQpLevQs1eeGLmGz7Ug07dv33BaAoAESVtk4xbKvE5uSTCVJGGBVkFblDZNZtrxOy+0iEDLxWPaKMQwn63cGssGwrUgc++994bTEgAkScoiq5JQ5nZyS4KpJAkLtCraojRpMtOO6pu1lRabB404NhCuBRkA4iYpi2wahDLVfRhUXqCdtEUzlh2uVG4cv2GYoVRfHEFy5oU1DpuHODYQrgWZ/Pz8rIrXRqKMaAK5jeqLbK4JZXGg8gLtNOEPeGl26f98Dg/2bUd/mLLY1gzlR8hReXFUhbh9mZIwLzRz2DzEsYFwXaLgzTffLJNbZsGCBTR+/HhR42jw4MGUxBTHAIBkomoNLafSBUYKq5SnnXtLTAWyp/t1CszXRrXFUQXhQRVfpqQwYOxsS/MSX7egzKah1Vqy4pVXXqF//OMfZQSduIEgo+bEETRpPCdAsS7QQYwps/o3XujarBbNX7s9VXV0VBIe0linKOzNw3WT5oUetRS5ILNy5Urq0KED7dy5k1QCgoyaE0dQpPGcQHrGlJm2KGiSWpRSFeEhzUU/o9g8zFq5lbgHw8gjI7t+5wfxY3v27KGnn36aGjVqFMTXgRgiKJJKGs8JpGdMab4OvBhyVedbf34sBQ1roWQWa646zQuPCmiO0EZNlT5sXqXIN2AO60EaFFaONRmeJ2ffWrVqZTn78ons2LGDqlatShMnTgy6fSBH8m14IY3nBNI5pjTHdKedI7+uL8vLGoouzWrSnNU/enKsVFVjqVLYvMqRb6qyXbFx5VqQ4aKNHJlUrly50iimevXqUffu3YVAA9REpYkjKNJ4TkD9McWbN7e+M2YTv5EuTWtS9UoVTKOKWBvkJTJLlTw2KgsPKke+qcqNio0r14LM1VdfTd9//z3Vr18/6/jWrVtFdWqEX6uJShNHUKTxnHIZFRy2ncbUX6euyNKOyO5CzSZ+I5XKl7MMufUSOq2yxlI14QGh6fKoOK5cCzK8GzHLI8NOvpUrVw6qXSDlE0cQi1lSzkllVBAeVFJT242pgirlaf6a7a53oU6ZUPXp3bVFwNgXXvKKqK6xVEl4UDlvi2qsUXBcSQsyw4cPF39ZiLn77ruFT4wGa2FmzZpFnTp1CqeVOUAUC4pKE0dQi5nK56QyC9f+SH94czEtXl8cu/CgmprabEx1blqT5q750dMuVCYTquwi4CYJpOoaSxWFhzQk2QwbFceVtCDDSe80jcyiRYuoYsWKpa/x/x07dqTbbrstnFammCh3oypOHH4XM5XPSUXsfDXiEB5UVFObjSn+O2jcHE8CiEwm1DAWgaRoLCE8JIuWCo4raUFm6tSp4u+gQYPoL3/5S87nZEnyblS1iSOIxUy1c1J5vH1iYeaIQ3hQUU1tNqac0m3ZCSBWE7+eoBYBo2YXGksQBqqNK9c+MuPGjQunJTmIirvROFB5MUsTsr4aCH0NfhdqNvHr8bsI2Gl2obFMp29ZnBQqpglH9esYwQKerMUs6cj6aiQ99DWsRcbPLtRs4meCWgScNLvQWKbPMV0FWigyriDIxAgWcHVtrrk43vLziE5tVS+xoa9hLzJB7EKNE39QNaFU1+ymRYOhmmM6OAwEmRjBAq6uzTWNOPlqsBCT5NDXqBYZVXahSdDspkmDkQSBMVeBIBMzWMDVtLnm0nhr17CAHr64PXVoUjPWtvkREFRZZOLQPKis2U2TBsOLwJgWTZTqQJCJGSzgau9200Zax1tYpQWSoHlQVbOrinAZh8CYJk1UEgik+nWuMn3pJvrLR8voY4lIECf4hu7dpn6ibmyQPLQqyEyaxptjaYH/raAznpgucsH0fnwaDRg7m4p2Hwjseg4ZPzfWKuy8QLLQoidqza6xwnbaqkprAiMLiHr4OR/X30tBVlAHzkAj44E1W3dR39Gf0o+6ibBW1Qr01rBTqUkd+eRXID3IqJDjVDOnfYfoWFpgrfvSAn6LQEapeYhT02Z2Lbo2r0XntjsqdcEMMq4AadNE2aGK6QyCjAeMQgzDzy8c/QktuKdPbO0C0SMjIKggRPj1VVBlwnK7yHRpVjOryGNQi4pMEcg4nG3jMM2aXQu+5mbXXQWTV9gCo8rO10GhwpymB4KMB3OSUYjR4ONsZjqtdb3I2wXiQUZAiNvh0c8OMagJKwpBKOjSAlZtlk0smGTNgyxur0VaghnsBEaVna+DIu45zQgEGZcs/C5bRW1k/tofIcjkCDICAjuYxq1m9rND9DthxbFz81tawKnNsokFk6x5kMVNQcyRl7Snk1vWSfX1UNn5OihUNJ3B2dclnRrbh6h2aVorsraAeJEREFRwePS6Q9QmLGPOGf2E5UTcTo9uHDRl2yxbBDINmgcn3BTEPKqwcuIX8SQ5X4eFCnOaEWhkXHJ6m/rCsdfMvMTHoY1JPrJmEBkBwU+xwbh3iH5t/ars3NzkapJps931ZJ+cob1bKe1LFCQyBTHTZFLJ9TQHqprOIMh4gKOT2LHXLGoJxI9Xfwy3ZhBZAUEFNbOXxIt+JyxVnB7dLCqybba7nmmIAnODU0HMMMe66k7oacyL1VJB01lexmnLmHCKi4upsLCQioqKqKCgINDvfnXuWpr57VbqeUxduuykJqQKqt/cYeHXH4Nzi1jdnFb+IJyLxDiJG39T5j1R4XaH6OWaaOOvXB7RgJesHW2n3tZLufHJbed8M7JtTuOO2yt8Lb5eX0Qvz1xNc9b8GOpYVy1qJtcoimhOk12/Icik6CZStV1R4WXR9bqAGZFZ0JK06GnCSJ1qFenx95ZJjSmz8ceaSp70DuneJ9snSRxHIJqxjj7KjX4ully/YVpKQeiZ6u2KAr/+GH7NIDIq5CSoma2E4beG9aStu/ebhiJr2r973/yqzPgr3nNACDx6M6zqTo9R1T9Lk+bUeC5hjnVVfK8AKTOnQZBJyU2karuiwq8goqIDW1jYLaBWwjCjF4ZlMtsyJZnD+ZX+NrgbHTyUScSiHaajJl/7r74vpglsftEljEuq5jQOLbAqvldAHSDIpOQmUrVdUeFXEFHRgS3qRceNMOwmsy3DQgzXdsrV3aaT4OdVcxq3VicOLXBYm464ryXwDgQZl6i6c1e1XVERhCASlUkhLpwWHdkK0rNWbXOdzfWHor2p1wra4ST4udWcquAPF5cWmO91uxQYbn9ThWsJ/AFBxiWq7txVaFfcOxq/gkiacz/ILDoyFaT10ShuuOP1RTm7QLhJ4y+rOVXBHy4uLTBfT7syMW4FKBWuJfAHBBkPqLpzj6tdquxoghJEVHFgi3rRYdPPKS3r0Gcrt5Z5vdCkgrQXVFggoha43aTxl9GcquIPF7YWmOvacUkYzpauTzQqK0DJ9DP/hgrXEvgDgowHVN25h9UupwlBtR1NGgWRqBYdQyb/Uor2HHT8DU37d/9FbenzlVtpxBEtjCoLhIyPUBgCjkwafzeaU6eF/KsNRcIEGLawFpYWeM3WXdR39KemCUeb1KnqeD1rV60owrPdVqTPRd/CNGjiGQgyKVwwg2qXjKZFld0h8L/ocF9ygkev6DPbOtVb8VJ12i9WAvfvJs6jCuXyQ6vwLZPG343m1Gkhv/P1RVS892Ak2tEwtMBGIYbh55xNfcE9fcT1PKlZLZq/5kfT/ERPvL/MU0X6XPQtTIMmnoEgAyyR0bTkerRUnNgt+MbXWIXermEN+nHXPlq0odh00XFjAtHzyCXtqbuhqrEXs0NQE6PZdbETuNmUZtREBV3h22zB79qsFl3Vozmd0KjQ1T2iLeRzLfyV9EKM23OJWwvM49TO/+Wdxd/T5FnrTM+dx/KtfY6li0Z/6qkivZ64fR6TwI0KaeIhyABTZDUtKkdLqaDyDAO7hTNDmTKvlc/PE+HPGgWVy9Mfzj+eujZ3J3zkE5nugK/o1jQQs4PfidHsurCw8OLAro5CmlFR4kajKNNuNwu+zLgd1KO5pSATh3Y0KC0w+8TY8cg7S+i7bXuyjuXnEZ3YrJa4vlOXbgqkMrMKPo8qs1IxTTzPTYnhkUceoby8PLr55pvjbkrqkS3Vri1YvEDp4ed8PA4Bghc0tpFzyYFB4+ZQ78enieecKj8N2C2cZq/phRhtxz7yv0vK9I1dX/Y4pg6daqjs7jTZ82v8HpnPaBOj0fSinxid4HP/xDC5cpRVr8enUm2Pqm6nhc9tu/mas1O12X3hZtwe39B9uRXZRTxOOjWuafv6mq27y1xrHt6cXFAm8o6FQxmfJfbzyqXIurDWh6hIjEZmzpw59Nxzz1GHDh3ibkpO4EbToloUl0oqz6h3QrKwmv7j5ZuzokEYp6rObkwIYVSd9hLizOf64H++cfRTibvC93UT55eJGONzGvjSbLrp562zrp+M300S/T1Ob1PfMkdM9UrlaOe+EsfIOxlNYLtGBbR4fbHtd6VJixs0qmniEyHI7Ny5k/r3708vvPACPfjgg3E3JydwYxpQKYpLNZVn0CYwr34sZsxf+2MZQcapL72YEGQ+43didLouvGPnelGMjMDH5opTW9ULrN1Ofcyvm4W9a+YW1tAYfW/MhE4WAri+FZeGSKq/B0cnsWOvMWrpmX5dqP/YWY7XWmZj9VDfdnTR6JmO3wXMqV2tYhmTtZ+khDkhyAwbNozOO+88OuussyDIRIhbTYsKUVxJcj724twqoxaXhfNzWBF1X/oN5ZW5Llz0koW0Gcs20f+WbKKXZ66xfC/7XMhoFJ3azZO6Uygww9mSZdBrFs2ETg49Vkk76gUOseboJNYYsrCtzyMjM0ZkNlYdm9QS38WmSDO/L1XmCFW56qU5pkKM16SEqRdk/v73v9P8+fOFaUmGffv2iYe+DHgUpNGxVCVNS1wqzzD71YsJzGnh1L7DydzAC6xRGxMmMtfRj4nSKZKHqW0iVJg5DbIQ89rvejj+pky7+bhcH8uZh8w0i0ahM8h7Ns55jcenG9OnW2FcNZN4Uli5eaejU3bUG0alBZl169bRTTfdRB988AFVrlxZ6jMjR46k+++/n3Ixlj4sVNC0RJ2kK+x+9WMCc5qAja8ZVcBacrEocHMd/QrOYwd2FY69Rv+Kcnl8ferRE+8vd8wdwg7Nbhcyq3a76ePuLeq4+k2nhcLvPavqvBbk5iqJGzUVmCWhPYzaNJeX4aB6RZkyZQpdfPHFVK5cudJjJSUlInIpPz9faF70r1lpZJo0aUJFRUVUUODe098J3uFZLZpJdyxNKhzlYVzM3WZwDbtfOUxU83swY9ygro7Vou0mYONrZmr6KIjq/tD6tE61ivTA218Lnxh939/ap7WtT4RZLhw/7eDrztffro9v+XlrurBjo9Lf/PULn0snJJx6W6/AF1192+9986vUzmtp1J5HyeTZa2jE64stX29dvzp9MPz0QH6L1+/CwkLH9VtpjcyZZ55JixZlpzkfNGgQHXfccXT77beXEWKYSpUqiUcUoE6HmljttLTwVqddZhgOw8bJMwgTmN2u2/iamZo+DY7XVpoDduxlnxjtejvlF6leuXzgGoyuza19kJg/f7BcPLQxyMIUJ3OzSghnlonZ74LM3/H1hmIaP3O1Y0HQpM9rqmqZkkZ3B+3hE5d3pKhRWpCpUaMGtWvXLutYtWrVqE6dOmWORwnqdCQD42Iu65MSpMOw3eQZd7XysAnqOtot2FZ9yuj71Elw5IX8/A4NyStm7Zi/ZvuRKKKDtj5L2hhk+L128Nh4sG87KYE8iDksTfNamtMyRG2+57xSZtrDwioVqFnt6MdGohLiqQLqdCQPN4nLgnQYtps83SSMSyJO15F9d+xwShDnpk81Z2ArtIRqXrBrB2tXujS1T/KmtdfsOzRYW8PmJF5w/zBlseWYCnoOS8u8FkTCRfATY/qfKIR0Izv2HDbrR43SGhkzpk2bFuvv2yXeSuOuOi240Q4E5TDsZFrZdiQcOM3Ohpx4jE0XZpGavxk721aT4LSDdupTrsCtv65Oaf29ahqc2jH0jFaiDW99sV6YkrzQoLCyawdiP3OYGXbjX3W/kySlZUgCW3ftMzWBcih7HObHxAkycSOTkCxNu+q04FbLEkRopuzkmaSosKDNFlaqfZkF26lPR7y+yODwe2womgaZscX9e0GHhp4FGa1tQSzIXpMqmo3/pPidqJaJNumsUUwwhCAT8A3xt8HdIneqBM641bIEEZqZq5OnmSaFjUhmRhMrTYLMRGmVjt4MrT1h+CXJji1+HzsA6yOqZAtzat8RxJiSSR6o/S7XHLIb/0nxO3Eq6cBRWqoJXyrTTLG5DT4yLnEqkgghRl28+KTYFfnzOlbYNYQXtDRpYZx8EZxyPBiLzDlNlBxmzb/1q5MaO/qg6AWm284+1nEM8PdylJMbvwnZsTWwR3Pb7znBUAzS+B1BFGnVBCo7+Jry79qN/6T5nZj1kVcfo1ynpWLFgqGR8QAyQiYTJy1LGHZ+s7GiVetlx9W07QK9mi2MOzhtorQyT3EhRb2NnhdmFhJ27j1Id+hMSka27jL3SxKL8orNNIHDkA05aMz6yDhWZDV4Jxxtn8tq1K+7iL923xHE/MPXyk4zxH49TuNSNfOCE3w+9114gnAeT1toea6vgxBkPICMkMnG6JMSpp1fGyuXjZlJ89b8mGU2UFEF7xe3taDszDrs02JX0doY6lylwndioZIRmLQxYJZbSA8fv27SPHplyMlSY8XJ30nGDMVCUlDzj5VwXqOS/dS/ecdeoZWy+26nvuZzcvqOqEma8KUyhQqtgxBkfJA2J81cJWw7Py8mZsnGwt4FxhFJ4uSLYMRuB8dRXbJo15Kzfrvxg5EJQ+Z8GVofBTFWrHaybvPD2M0/TgKXXqA24//+ucixDVZ9zf4K/N4BL82WOo9c9u1IAy0UWAfhI+MDL7Z0oBZR2PlldoFB4pR/JU5fBKPGhZ1Jg6z0zddS1l/Fqu/NmLVya2BjRdvJcl4YLkURZH4YDTuBy+21tWuD2bXm8yvec0AZHxT9PK2abwcIBmhkPJCUkEPgrJWIQtUc9S7QbBH7ZPlm6v/i58IHw+58gtDi6FXON7wy/3AeGZP3PfH+MvFwu+O3g9stq/J248+TCWGs6HeyTuHmM5ZtopLMT6HcdsiErru5tnaaQ+O1ZoFAr4mR+Q6nc/E6Hq3m6Yf6tqO7pixWwrcDBAMEGQ8kJeQwl5EVNqMQMoJKsCeD1SLGgsTiDcVCO2N2HWSul9tFhd8z6ZqTy5hRjNjdO2ZmmMNp/w+Ihd3uWjqpvN1oJU5uWYec6uv6GStOQtKAl34qPtm1WS16cWBXy02TrMBldm1lPmeGdq2dalrJCntBbBat5mkWYlTx7QDBANOSS5IWcpirOKnWNaJSNQdRjkDGlCmjZTC7DnbXy4+pSm9GGXmJeX00u3vHzAwz7bbe1LNVdpoDLztqq743csqRqthhjhU3QhX7W/V6fKrl9ZcVzo3XdsLV3ULPUSPzHTzOrxw7iz5ZsdmzeUpmnvaTWgGo5WIBjYxL4PWuPm7TuEcRRujHw99sd8qp/x++uD11aFwzS1MisyAar4PT9RoyYa6ICvKjgeTfcfIFktnxawS1o3bSSmhagLDHilszGkdtXfrsTHp+wEllzt3SCTevbJ4a47X1qzn0o310ygjtxsyGeTq3XCzyMk760oRTXFxMhYWFVFRURAUF9jkcZJi+dBMNHPeTmtcIMvvGD+8OWHNgBe8+eSdmRFVVM2s/rBY4NrPoQ5F5IjlQcohmr9rmuCBq18HpetnBu3j+HVnfDbMcHhqsGQjrujuZxfR9zziNAz9jRd8Wnn61/2tXrejK1GO3eLC2RkZAMy44Zp9zuzh5/Q67cW6FXZ6fuMZartDv+c/ps5VbTTWYk689nK4gqvUbGhmXOIUtHjSrjpcjqFI4zqt6O+wwQqsFzMn51m5hM+ZT4YWge8vaYvfrtCBq18FLdJCGmxDbKH2F3O4ajX3v1BY3+z+t31lQYedmJ+GCw84PO85m+8ZYYaYdc3K4ttKoBZEbxMt3eC1kaXUecYy1XJqDV27eaSrEMHwcRSMVB3kI1FYxqjiJOanM7a7VrFXbXP0Wny/nPeEdJ3PD5COLmI1jrN316ty0pm3FaFlzkzbB3nakcGNUESNBO+a7Getuimca26X1zUnNajlef83kMnn2WuGUrB/fLHCxk7fVZ6wWnCCEetnv4LHx7y83ePoNu/NQKfNs2ubgWQ7zEleej3KehbOvS5CHwLtjbZQE4VwblIObU9I1s2ulOdjqKzi7QfMBmDT4ZDpVwjHW6nqNHdhVyiHWymnX6Ch84ehPxfG3ru+ZlUMljMk2KMd8fV+7Gesyyfac2sXXn82HMvBYMTpiR53DyA36seG1KrjdeVjl60ljiowbI5+D7TWSzrNFsEAj44FckvSDdqyNCq8qcifVrNudj4zK3OxauV0EnSJTnK6D3fv8hOlaTbCM11QFMupzmV2+k8OnrEbFrP+8mkqM7eJ+4SitaybMsa2NZKXZUVmD7GaMW1VPlzkPM82QKmbwpM7B3VvUsX+9pf3rQQNBxgPapD9j2WZasO5H6tK0Vs45+GoTwQ9Fe5WODpBVb8sKKG5NFW6SrmnXys8iaGU+k70OZu/TCzmLNxTR89O/pUXry5orjItK0BOsTB+5Mec4LeJuhUn9WPdaPNOsRhGf22u/6+GYYNBN4ru4fUXcjvGMLvLKzkyaNDN4EKyJIUKLx1WPY+oIM7YRPh71uIJpyYdKlB0dWSX6G/4/whTwcWI0FdhVGmb+OnVFIq6LjGrWi6nCjSOttrD6WQTD1Azy5PTanO/o6w07TF83mlf9mjWM5juZPpIRPngx5GrZMk7WbiJo9IKRFwdqnozZjMTzilm+Hi3B4KmSmybt+oZtZvVibvU6xo3h427PQ0UzuF+axaR1G9P/RHG/6+HnfDxqoJHxQC5n9nW7S+X8I16vC0+M7FSWd0RVGWZorozmwMvOR9sRc4kAq120cVfpNYoo7NB/p110l2Y1sxYVrxOs2a6ZBQ8z04q+j9ixVWaXzzt6/i4WEqx24m4WWjOtgJfyCnY1irT7R68d+3zlFhrx+uLAzIte8aLl8DrGR/XrIv56OQ9VzeB+aRmT1g3VrxNMWm8GGbyYPLxcF54Yr5s4v0x4H6ssWdoPWgUsK6B4XZh5QudMrMZQaatdpZdF0Cn0PwifAKfrdGrruiJ0WOsfrxOsmbA8zyFyx4vTqt3mw81Cy+HuZloBM98ivh4cubV19/6snDVuaxRpJsB3Fv0gfX2DSi9gHEteNnZux7jxnLycR5qT5I2K0W8z7LQVMkCQcUmabwYn/Jg83FwXnhjNchSwPTYMrZesgOJ1Yd66a5+lEMOYVYDmCciNg6e+nUH5BBgXLKfrxGZWfui/32yC5ZDuX53U2FS4tawV5bDWabl5ghKyZRda1haWz883vZYyO1Y+X2b99j2e7h+319cPXjVlVm1w40QexKKssuNzmrQjcQBBJmCnovJsgE8pfhKnyU4STlqfMLRebgQUMwHDaZJ1EgDZRGCcfHhiGtq7lVTGXTtBauik+WUc8vgaXjdpHr0yxDz7pp3wY8wkbIZ+N250FJ4wc7W4dlpuFKNQ5XSt+P47ZHPuXjRZdkLC4PFzbPO48K/wdfryu+2iXITsjtVtjhl2qneqPi1zff3ApSqMmjEZTZnVverGTGYm7Id5nyc1qqmFAtqROICzr0tyObOvUw6dIPLryGh9wsh9IeMQyYsPL9B6IYYrETstFE4CIE/gZs6dsoKjlSDFk7FZVAHDx3kBMXPQtDIV8KLuJMRYOT9rjsJWNZs0nM75xGa1bM/drB+9arK4XbLJAO98Y1GguYWMsFO9XbFO7foaBYsgHFn5Wlw6ZqYY98bpTUZT5gS3/ajCKpHc8073uZ8CqSA+oJFRWD0Z5a5A9recbLF+7bQyi3cYKmAZ1azZ4jN/rbMzsxt/AL02w24HyY61rLGx669Zq8yFGI1rJ8yl5ZsOmzYY/q1b+7S29AGTXdTNduOyvmV258y+KGzGke3Ht75Yb5tojb+JI4C0kHej34ex+rIdi9cXZ9X28ZtbyApuE2sEORw76zgXUwzJd4+vxXyHvnfSlKkyrzrd57kcyJFkIMi4pDQKZcVmX/kMjOgnUlbfR5XrwK0PhdNE4NdOq11fu3T+YQp1VqpZv07esv4Axu+zExydx4K9mXOFTojRJuxtu/dRUNSpWlFa0/b1+iLbBHx8zlwMU3aRYX+Z+jUqO2p3HuzbVuy49b/VqXFNWvhdtubILUHlFrKKuLpszEx6cWBXMQZ4bF4zfm4ovnuyQhdfyzk6YcftBibqyBurJHm5GsjhBZXMbxBkPCz8PKEaVapWkQteBAkWZIyqzLB2BV53IHa2WL92Wr6Ov5s4zzRqSbvGUd9Efp28jQLgxqK9tuUHtO/z48TXvUVt29czJhM2axbsYOdONg/J+KA8/v6y0jHktON+eeZqOq9jQ/G/2TmzYGJWzdi4yLjyPckjuv1fi0SlcD1+hRizdgXla6bBJiS+RyqUyw8k+Z8Vjj5LeSRKYAThaBp3xvRcDuRwg4pJBSHIuIQ70Djx5dtELngRJMz8EMLYFai6A+HryGXgDzsBbs3KI6PZsKO+iYJSfWtCnhatYgVXPtZnd/UiHPIu95SWdSyr1FrRrmEBffP9DtOdsZtIE6PJyCrCheHdvFWIMcMFEWUWGTe+J24iwtykyzdrl9vcQk7w57hfZWILmtWp6vk+lvFZ0gQNvxuYsCJvZDc9aY5qChIVzW9w9nWBVbZPnlTcFKFz+r6oHF1VLijH8KTTr1tTuqJb09IJiPPLGBdRfs6706QUC9UmVl7Yy36flt11TiDOhs9eWTb7JldUtuPhi9tbOkQaC/HdeqSatcwYGtijufR73RbP5EXGy/3klmPqVXOVdNAut5BVhl5tTMkUi5SJLRhx7nHkBxZsjQtF/hFHd/bVCXoDwfdS7zb1fQsxbh13URA4ukKsQQONTIAL/1cbfrLzB/F9Ye8KkrYD4ZvISrvAx8PWIPlVfVuZEfUauIIqZc2KvHPv/+LnNOrXXRzT6ht3nla7XJ7QrfwROjSp6bgz5nbf++ZqR82MfgydcHR2enkjdar95FOj4aRh0ftQsAYrbL7dvIsa1axKbw3rSWu37abxHO5s4QjbzaYMgtYvHLbNEU96kx6fDwuIFx2pFO6HmlUq0Dntjnb9OScTHQthqhfJ9aI5eLBvO7po9CeGe7I8PdS3XejtTQJrFDW/QZAJcOHnSe38Dg0D+z49YTi9qVpQzgouV2AHm6HCbHNG2qAgP7EW7zkodrZDz2gltDGsiTHCGr/FG4rFjtLMjCZjszaq/WWEMjtTgRsBQ9aR+/H3fvKpkXU01bc5CN8TGfTnzVFrViz9wd58yHDumbdvOK2MGdVJGypr3mpdvzp5wax/2Yx1TL3qdPWpLejklnWULrLo1Wz+hymLxT2ph5/fNWUxopZI3c0vTEsu4InYTi3PNnc3qjVrVebhHa+esJzeoiooFwz2U3fYqQj9FJyzU8nyjp4ngBKJlcns97y0y2gimnB1Nxp0anNRYsDruciMITtTlFE17bT7e+SS9qVJ95xMA+VczHTsV8SO5VZoi6HTNSjac4A+lvAl+mLdj6KqNZvPtHwxo/+3wvYzPA9xG43nauV7FIgJPUMiXJ/bqXp+FS9mc1XNJirRUlHzGzQyLhnUo7ltPg23qjXznfHh3TQvKmGnm05SauvuLawXF6ZRLfukWnE6RstMrDIaBePv+W2XmYnIyXlaRsBgvyYznAQl/f3jdD1YcyGbst/uni2oXJ7evP7UMuP/509Oz8qz44U/TFlEbw07zfRa2plvFqzdLvqGtQH6hZW1Iice8U1hIULG8drtnCRr8nbj4Bl1lKEXzYGqZhPVGBVzdJkZEGRccryhjLxf1ZqdIMGv+b1xZCeQJKS25t0A70KtstX+Zuzs0CKY/E5yMhMrf142cZ72e37b5cWPwIuAIfvZJ99fSl2a1BL9p0U6caixbM4ms/uJ/9qVeijee9iUwA6m+vvGrxDDrN26x/Ja2iXd4/5nPw1jpBeHOmsLhnauM5ZtMjVJ2vke2SFropMRluMK1fViNlfVbKIahQpufmFaUkS1FpSnvkZaU21z9WtjFE7QKdnN8DvJyY4b2RT72u/5aZdXVbqfe8DqsxqL1heLSuFrt+4W49UsLb7M7k9/P8kszEZTg5OAWL1SOZJBq8VkvJbatXeKOuLszZr5j//ed+EJNH9dtrnoZ8fWt70n2PfIDU59ZMTOn8dOUHZT0iEKs7mqZhNVaRHwmuUHCDIp9Svx48+RhN3AhKu7mr4elj07iElOZtxwpWz2Vfnb4G7UrlFBmTwhxt/z0y4/4fd+7gF+D5t7rGBNxPmjPi7rbHok5NdsMbdD0+zIFGXUcBJ+du4rITe4FZQ0tN1u5yY16d43v7LcmLjxPZLBTc0qK2F5+tJNtoJy2Jssox8Y/9X7VCV1bgdlgWkpJaq1JCS6CxJjZEEU9my/tmG7cWOmgmczGvsF6UPOzX7Pa7v8aHP83AOrt+6kzTv22r5HM/cYo7fYeVW2ppGeFwd0FZoeq6KX7GTLsMDD79Xyp3y9oTgraZ2bZHh219Lp2uvrQMmYAN34HsmYnY39+9f/rRARWjJmGreVvY3nEjRuzOaqz+3AHAgyPlDVryQXnNY4pb2KhSW9jhuzhWrWym1ioeCdpN3veW2XU1FKTYsQlG+VlwXOCc6xI7MA8jWadltvumb8HMu8Lwybsro8+D6VWKTcbVW/uivfGavF3qmQqD5Pi8zGxI1Q6sZvRetf9luSFZbdVvY2nosKc5OqczswB4JMCkm70xpP7HZRKLyrDnMSCnKS43Ph/Dh2C5XRETXIdplpczgBGC/omoNsUM6ZbitKy6Bl1eYwZ6eMu9z+167rUZqzxSpbsFGIYS1M20YFNKpfF9vPmWGnGTO79mxO5MzKnF/GzcaEx4esc6sXB29ZYdlPZW/tXCBAALdAkEkhSUt05xanid0pFX4YuA0vdaOdsJvc/Ya16iNfFqzbTm9/sYG+3bQrMLW/1j4ee7ILXP6RdhlDj+1wE7HG1+nzlfIaA26BlnnXqRCnkSE/a2HZHlnhQHZjImNi9Gt2dhKW/VT2TsMmC8QDBJmUomKsf1ALsdPE3rZhYSC/I4Pb8FKtHX+dukJUkfY6uQcV1iojUHlR+/sxI7FZ5fZzjqUrx8629GkxQ0bg8tMuTfPBpQdmSxacnL/2R1NN0WFNHPs+5YksuXYaN6uNidGPRkYwCtvs7HRvshP7CzNWpXaTBeIBgkxKUd1pzc9C7EbjFHYeC1k1vZcF1G5yD6oCrRt/BjeLnFs/Cb35RqsF5eTQ7UXg8uK/YRQo9x+Ud/ft0jQ7WorHwdBJ88vkQuJswlzg00r4Pb/D0TR/7basaCm2gO09UCKiffSfs9OahG12dro3Wajr0KhmIjZZIDkg/DrlqBTrH2R4uGyYZJhh6G7ysAj/EJdaAKvJ3SmsVTbU1m21aNlFzksVahZiJg0+OStbsdcq1lZh436+l8O+uW0L1/5IC7+T06RxZl6jNobHgVlCR45MM45JfS6o//vXl6Yh37NXb3M1lmXD9f3keHG6N72ERQNzws7FkxSgkQGJDA+X0TiFGYbO3/3vLzdIaTB48XOjieEU/5wd19g2/p4/vLk4q1Ky3e86cdi04YzRhGGG3nTnxU+CNTHaQhaEn4WZKdHr97JA8uLAwyHZfP1lP/PWsFNdOcLya1wNW3P0ldUeuR3LdmbnIDSYstpgRAZ5J66MyaqitCAzcuRIev3112nJkiVUpUoV6tGjBz366KPUpk0bUoGo64ekhSDt9HaTYRj+AG5MRJoGQ3bxY4HhhIYFZYQYt2YpJ82J2+/j2j5Wan+z73JKPme26OvP12sVa75+fO04cZzZBO/0vfecfwK9s/j7rJIAWl4ZXhz4fncSIhsWVqZHL+0gNDHablmbH2QEqTvfWCSqYbuN/nEzlu0EDdYABWGyZCCohEdQpuW0oLQgM336dBo2bBh17dqVDh48SHfeeSf16dOHvv76a6pWLb4bBNJwMsLDw/gdmV2y3rdFZvHT+zws3lAsMp3qx5OsWUrWYdLMR8MMfYFCN9eDayMVVilPRZI+LuzQq9coOOVYsYKvFVtM7Cb4w9/L5qWywtQvuzSmq09tYalJkClb8M5NP6MMZYRAYJwfbu3T2vEceKzw77vVHnkZy0ZBIxcSaaYB9FPCfGTeffdduuqqq6ht27bUsWNHevnll2nt2rU0b968WNtlNnlzfoykp/+PiihqmrCwed9bX5u+5vV3ZH0s9P4ATgsS7+Bb169ephSBvh6NqMkj0T4Zh0n+PhkhRitQqGW5dXM9uH6QrBBj5dfiJkW+XiDic7PzHeLvLahSdrOhVZK28ytzEoxfuebkUsHTTJh64v3ltjWR3FZC18NaKL8p/v2UrADRgX5KmEbGSFFRkfhbu7Z1Lod9+/aJh0Zxsdxu2K80zJO3sHGv204dmljXkQHRhIfbaU7MfkfGTOg0gdzy89Z0YcdGrswkG4rMU/Vriy8ny5OBw1qdEsLJ+MUM7tmcTj22nu110K4V1ycKCqNGwWj+2Lu/hK6bNN/Xb/D3FO3ebxrSrSXWs9vNWoZB5x0W+vi+d9otvzWsJ+3Ye0Dk7AmqEnpQZoW0J9JMC+inBAsyhw4doptvvpl69uxJ7dq1s/Wruf/++0Nrh9NiJmzcN54W2u+nhTDDw538C+6/qG2pCdCNmdBpAjEKMX7MJD+R8RQdY419ReNWDWpY5jQJo8SAkzlMb/7g68gZfL3FMh2e4G+YPN+Xr4mZAM5CjKwGbuvu/fTGsJ502ZiZIjt1xqAeZ1OevhK68bfaNyoQFcLDMCukPZFmWkA/Jcy0pId9ZRYvXkx///vfbd83YsQIobnRHuvWrQu0HU6LGfs45HooXNzh4W5Ur27Cs72axLyYSTRObllXfHe+hI+JDE6ZaTk5mxV+crBYYaWFMwsr5ffJC2zZcAHOTCbj6K9U3mjjM7SJq26zIGwVOlzbwUdO2y1zFJTxXLSimFolaLMw5eF92oRqVkD152SAfkqgRub666+nt99+m2bMmEGNGze2fW+lSpXEIyx4MeN6KHYTIuqFJEP16sVpzotJTK99Gj9ztWPBS+Puir+7/4ufCyHZ75jj8cvJ1/QVtTX4uJ05ya8mRjsnFgSstHBOGjK+jhyizJpPWSdqhjeuMg60B9lGbMCN1o79YKzQC7vauVz27EzhHK3/WaOZSK+VYmHMDjb36cet28hK1RNpgsOgnxIkyPBNe8MNN9Abb7xB06ZNoxYtWpAKPNS3HV00eqbl67loo0yi6tVLeLafCYTf1+ao6lLv5erTl3dtLH6HTUeVK5Szfb+bMccZZI3CmLYwW+F0rViPkTE8r1G5PBXvPVhG4ONraFVwcNgr8+mb73dkHed2XjdpHr0y5GTxnPOscIjyBaM+NjWzmMGC23W9WnrKQSMb6uok7N129rFlEhvqQ71lBGknU+UdRwpaHtZAHT5vL5GVCJ1OBuinBAgybE565ZVX6M0336QaNWrQxo0bxfHCwkKRVyYuOjap5WlXC6JDRnPix2nO6wTSvYW16Ya55/zj6Z1FG8UCpy1yLMgU7zGPSPFiF/cijDldK6PQwkssP+eMuFf1aE4nNCq0/A3WeFwzfq5tRXOORtIWdq1iuKwQo8Eh17yYWwkbvPgbc9Cc1KyWabvMhA1H/5hd+135Gllp2czGthGzyLSw8owgnxaIG6UFmTFjxoi/vXr1yjo+btw4EZYdJwY3CcfjIDq0iZVNGIzVYh2H0xz/Ji+YZgsNH5+2dAvNX5sd0WJXOJE1N17t4nx+rPXU/CrsztfuWhVUKW9ZF2ne2h+pSsXyNKFjQ9PXeVHnvDkyxSGnLvmB7l26xbOJi8cAXyvW7pjVOuLTMmpe5tsIV0ZhQ1YwlvU1shKk9YLo5yu30ogjWhgngs4zEkU+LQhJ6rNSgT5SWpBxsgfHhV0uDv3OEUSLl4k1jirhY/qbm3Y4YZqdydKMob1beVo0grpWnZvWtNWkmKUl0E98//fPL6QrXE+evZZWbnZfZsAomLKJiu/RWSu3Cs0ROzjzXMM1jcq034WwISMYy/gayQrS/LoX517+DJ+v38UnzOyyVhmjtSzLIH62K5QYVmlBRlXCSH0P/ONlYo3Dac7qNzlKxy1//d8K6tKkluuJI6hr9fnKLbaCjAY75068prujCcmO5Zu8ReR0b1m7jGCqaaO0e9npnuZgJr1DrpWw4SQYyzgcuxGkvZRz4DHD0VF+Fp+ws8seHp/Z38+m1l6PT6Vpt/WGMKMANypUJgGCjAecJo86VStG1hYQzMQaldOcUQ3rt8YQm6HcThxurpWZ2pj/st+Om5wyHHH1s8emZvnRRAFbesvn52ctfGY7SY5EtKNtw+z8LVbChpNg7NTHsokN9X3Dmor5a7Y75iliYaxqxXLC3Od38QlzM2entWLt3TXj59Br11mXzQC5VyYBgowHNBWy1c32+PvLcrJwV5yoriWTUcNaZo7lOj4GZ1o/E4fTtWK/i6/WF4lQcaudu5ecMlELMQxfReP1MWv71zah7Qznb2GhRFZrZyUYO5mf9EKMle+B2VhiwVJvomOTX+Xy5bICElijtHNfSSBjKMzssk7jk8ckzPfxskax+TYxCfFUw64AnDYpgOhQPW23TOI9Xrh+dVJj6tI0u8TFqa3r0cOXtLf9fje+Ek7Xip1Hr5+8IEuI0bdXtuZU0HAElDEZoSza9bGrD2WHJky4Td5oldjPLpkZCyqcFI99dgaNmyOcobUkeVZjiaPaCir/tC9dsHY7VSiXL0oitGtYIDXRq1KjR0YzqUpbc5Vmis230Mh4ZJuDg2LcGoBcQ+W03U5q2C/Wbacn3l9WxrFxYI/m1Lbh4bBl/o4gJg67YppOaO2dLVn/SYMXUZmil05VuNnR0yns2IqNRXvFdb7rjUWu2srjh7UbMpFdGtxXrOGx02jZmZ/shN77LjzBYiyV1XjxZ3bvP2ibSNHr4hPmjpzvZR7/Zjl2VNmY5DotFZtvIcikRCIF8UQgBTHp3zVlEX2zITsJHPs8VKnwHU0Y3NDTxKGZJfh1fr9dcje3jP1kpav3d2xS07ZIImtaHruso1j86lSrSI+/ly3UsbaEFzXuW+5Lfh9fMzeZfWVDlI+pXy3LqZhDy9k5mTUjVo6x2rXm8gSc2ddK0LLL2Csr9MoWEdU+I+NY7WXxCXv+Y6GVHXuNEW35RzSU2CTGzyiF5lsIMimRSFUjjtwCcabttjtfx/pckkUAZSYOu2RrVsnd3PLt5sPZhtnU4aRpeeSS9vTfRYcTWZrB38N1h/TZfkXq/jFHUvdbmOKMgp/++2TDuc3QhBh2/j10iGjJxmJLYcRtEU0ZXxTnqKbgzXleFh/Z+c/rPMDjgaOT2LFXr9ViISbujQlQr0xCXkbVZC0BUVxcLDIBcwHJggL7yAS38ERuleo9LeGBbicilXILRIHs+bKPQ9lJn6hKxXKmDpgaXCzQWI3abuIw+52gTDxGalQqTzv22TvwWlVr1njr+p6i5IBxzJnldJE2QzWtRd1a1KLR09xpjtzABRw5C7CXquYsJE0afLLp/eB07n5+V0/ekUisUb/u4nnxsZv/MpQJbB5QYaEEaq/fEGQCIOobLQpth1eBxHzBPrxLS2Mkl+z5mk36rD3YvvuA7R6bFy7ZPvYjAISFMf+KjKDGzrGaKUdVRl7Sjka8vtjzNTm1VT3T+2HN1l105hPTyxSv1Ewq/BmzsVStYjnavb9EWl/DDsCTrjEXptzOO2bzX67NAyDe9RumpQCIKgdJlNoOL8mOVMstEDZuzteohmVtzICX5jgudm6ul0yytaiRiQYy4iWfjleMxS7dfdIbWrZjs/uh7+hPTStw5+fnlZpUeCw93a8TDRk/t9Tssmu/tVbPDNbEyM4ZTvOOcf7LtXkAxA/CrxOETAhvEFiFqOonIq+RDGnCy/lqIbwcZWLHCaz2d+kLEKUA4Hei4d05L4ZmC9q6bbupYc3KPkQFeZrVcXfNWMDkdndvUdv3b7/1xfqse4mrYVv597Bw8+X67VlzgbEml76NHPXD7TSGq9td96DmnVybB0D8QJBJCF6FCy94nYhyLZLLz/lyhIsdo/rJ75iNDphWuVZ4gYsL9sdwcjBls0qn+9+ngePm0Ibte0Nway0bLfXSVV1dfeaYetXptrOPFdeaC0364c8fLM/KEbPwO+vILmb+kYy8Tnl8tCiv2/oca5uvJqx5J9fmARA/MC0lhCgzKXqdiKKM5FKh4qqf8+UwXSvc7pj1mEU2aXAuFrvcHE7+LHr4HKtXLkdFFlWvjQw/2zkzLptVtu/xHnHklrsvOEH0YafGNR2FCI3lm3bShc98KvqoRPZiOaBpN37VtbHt+7o0reXKhLh1937fUSVe5h1EdIKogSCTEKLc5fiZiMLOLaBaVJSX83WqgMw7fq8YfXHK5+cJs4S2iFk5YXZrUVtkgpUNJXaqem3ErLaUHjuzihv1Mp9/8Z6DUhE9W3ftF3+HnNaChrk0z368fHNgGiNNu7HngLVQyI7hWvkCWROiNif48eHzOu+olGMEpB8IMgkh6l2O14ko7NwCKlVc9Xq+TrtcbYH1g9XiZdevfC4zlm0SyevaNKhBYz9ZlaXB0Wcb5lpMQSZb81L52wiHlrMw5BTybVyEjzeYvWQIw+xlpy0b3a+L41yg16yxj1Wc845KOUZA+kH4dYKII2+NShORTI4NPxV3ozJVhXkeXvvVKblb6/rV6InLOlGHJjVF+3/7t7lZGXCt4PF5a59jadvu/abX1m1SORlu+Xlr4X/iRLPaVcRifG77o+mFGavokxWbpU1rsrSuX536nNCAmtSuKhyY7SLV7DCGqZvNBWb4nR+4r7/ZUEwv25RbACAskEcmhYKMisJFlDjlFzHLSeLXVBWWgKNang27RHpeMudyRt/jjy4oU0PKuADK/q4bZDUyerjgYqv61S0jgbyi71M/eX70wq1+TDKaCfHRd5aIGk/GWlFexpTZfWGs/wVA2CCPTIqJKm9NLvgJWZmqfjdxXhmfkSB3oSr5EDj57OiR9WNpUFhZCDGs5bAyA7r5XTdwyQcWTHbtK5EWkLjgIheVNMt+XC6fqMRjSmR9dI+TSZGT1H3z/Q5LE46d0L111z7T4pBecrdwv9z49wVCKLKr/5UEh3yQG0CQATnrJ2SXuOuzlVvLhCsH6Ysj60MQxWIQRiK9PftLHJOiORVA7HVsXZq2zH2By8wRwYQFEDfOLFa5fbwKMXq4j50E8Ycvbk+PGzRYeuHWzj9s0KnNHX/fafw4mflkhSLVHPJB+oEg4wPsOKInSE2G0wJu9JcIIzOplXYt7MVAP3aDTqTHmoU/f7DU9j03vDLfVIOgZ7aN86sMQQggQaHNEXaCOPsfWQm3TtlyrzmtuZS20m7Okq2M7iQUqeaQD9IPBBkPYMcRH0FGQ3hdwIPM2WNEW2j+OnWFUOUHsRjoFy/2cTEbu5zcbfaqbYH4qjgJKLLv4dpBaaDHMXVcVTA3E26dhG7WJtkJSdzv7I9k5wsma+azM+GiPAGIAwgyHsCOIx1+QlamKqcq0WFkJpWJ3nG7GJh9Jy9oxYakc3z+3VvWFgteGD4ruY5eNvQqiMv4h9kJSXzcbs6SMS+KyuLNatm2N8rEnQBoQJBxCXYc6cJs8ucqwwcPHaJZK7dFlplUVq3vZjEw+04zZ10+x5nfbhWRMcwNk+cfjn5JdTyjd3hBb1q7KnVqWpOOrV+DHnvP3ozG/lbGecGtIC7rH2YmJMnMWTLaSa30AWt2rLTPKE8A4gC1llyCgmjpQtsh8yLO4dv8l5+P6X+i7zo1sjjVzvGyGLj9Tr2ANGnwyVS9Unr3OHWrV/T1eV7QV2/dTVMWbBBCDIc+W5S3CnRe4LEnMya1wqSacCMzZznV6ZItGGn1PV6KVQIgS3pnq5DAjiOdGHfIUWYmlY0a0nbfnPqJc+rYtclLJJI2djmUl6N+7KheqRwN/3kb+uPbX1PS2LLTf+ZkPVwCQoRoZ8KdF8I0SznV6XKjfVYptQDIDSDIuAQF0XKLKHL2yDodsx/LgZJDWUnVrJzM3Toys+9M7aoVpYWgnftKqFV9++vCm/Ko0m0eVVCJNhbvo7jgCKlGhZVoQ9G+rIjvMOaFsMxSRkFpY9FeGvH6ItcmTpQnAFED01KIKl4AZLBTx3dtVqvU5FU+P19EFsmo+a2+k294NoUYYQdg7XtkhSAtUsbKHNGqXnWKinsuOIHiZr1BiFFpXnAzZ2mmqe4tatt+p5OWyWjiAiAsoJHxAHYcIGicijl6cTI3+84uzWqZFntkoUT7Hk0IcqrwXC6P6PKujUXVZn3BQzY7scZm+aadFDaaVuHvs78jVdCKNo7q18VyXog6B5WXOQvaZ5AUUGsJAIWwWmj81JnSfyf/lfkeu6KELMAUVMmuucSao6t6NBfFBbleUZC1k/SwNol9UoxFKS8a/SlFgVNovlPxz6TloIqjUC0AGqi1BEACsfJ/8ONkrv/OtQ7RM5rZSdvBf/nddrrzjUWifpEGCzG8wOkRxRbzsiskh4FeiGEWrd9OC9cG95t1qlWkrbusnYHdiGdmPiR+clDFkUkc2meQBCDIAJAAglLzH3IpKHRoXJPevuG00oWMtTEDXiqr0eE26c1LfjimbjX6dotcuDJrhYKMnLITYtwKMkbh0msOKhW0OLlaqBYkAzj7ApBDTuZOmh3WSGiLLpuzeHHVO27ahRgHhfabsgTRJhYIuUZUEFjlTPGag8pOiwMAgEbGNygcCaIiCDW/ptmxyhXyyDtLRHSU1e7fS30qTWt0/0VtpbIGh13rsVvz2lQuP09k3NXg9gXla2MlXHoxDyKTOADOQJDxiArqXpCb+FXz84JtJchwqQKjmlbvw2Fl4rJDH33FWYNlkq4FzTH1qtGQ01pS95Y/FXA0Ewj53D5ZsVm6PINeSHMSLr2YB1G7CABnYFryCNS9IKls223vB3LIZvdvZeKygxd5TbjXtEpvDutBretHk2eGhYfXr+tJV3RrWqbekTHPCZ/bqa3qWX6XMQePJqTJ5kxxax5EJnEAnIFGxgNQ94Ik48U8pN/9B5EB9on3l9PKzerVJeNzu+/CE7KyJxudof82uJv468W059Y8iFwuADgDjYwHUDgSJBnLrL8O9QKNu3+vGWC9FLT0g1tNqdP9zUKM34y1brLeIpM4APZAI+MBqHtB0jHL+ssmFa7lxGUQ3Oz+3WoNvBS09INbTalq9zdyuQBgDwQZD0DdC5KO1eJolslVZvfvpuKxV9OWX2QdY1W9v5HLBQBzUKLAI0jdDdKM192/7OcGjJ3tGPnEgsPxR9egxRt+yirsB/ZtOa21tSOvHtzfACRn/YYg4xOoewFwj10tp7DqKNnVo7IC9zcA8YFaSxEBdS8A/k1bWjFI7a8xt4ubvDVB+rbg/gZAfRIRtTR69Ghq3rw5Va5cmbp3706zZ8+Ou0kAgADQonfY5KP/a8zt4iZvjWzJAACAP4ylTOJCeY3MP/7xDxo+fDg9++yzQoh56qmn6Oyzz6alS5dS/fru1MQAgGRrb2545UiJA93rmhPukJ+1oJnfbqFPlm+hRbpq3QhVBiDdme2V95Fh4aVr1670zDPPiOeHDh2iJk2a0A033EB33HFH7D4yAIDokHXChW8LAOFh5qyvbSh40xEUqfCR2b9/P82bN49GjBhReiw/P5/OOuss+uyzz2JtGwAgemRzqsC3BYDcyWyvtCCzZcsWKikpoQYNGmQd5+dLliwx/cy+ffvEQy/RAQDSBQQVAOJhjYKFTBPh7OuGkSNHClWU9mAzFAAAAAD8o1rma+UFmbp161K5cuXohx9+yDrOz4866ijTz7AZiu1p2mPdunURtRYAAADIzVpt5WKMDlRakKlYsSKdeOKJ9NFHH5UeY2dffn7KKaeYfqZSpUrCKUj/AAAAAEAwqFbIVGkfGYZDrwcOHEgnnXQSdevWTYRf79q1iwYNGhR30wAAAICco1CxQqbKCzK/+tWvaPPmzXTPPffQxo0bqVOnTvTuu++WcQAGAAAAQO453SufR8YvyCMDAAAApHf9VtpHBgAAAADADggyAAAAAEgsEGQAAAAAkFggyAAAAAAgsUCQAQAAAEBigSADAAAAgMQCQQYAAAAAiQWCDAAAAAASCwQZAAAAACQW5UsU+EVLXMwZAgEAAACQDLR126kAQeoFmR07doi/TZo0ibspAAAAAPCwjnOpgpyttXTo0CHasGED1ahRg/Ly8gKXFllAWrduXSrrOKX9/HLhHHF+yQbnl2zSfn5hnyOLJyzENGzYkPLz83NXI8Mn37hx41B/gzsvrYM0F84vF84R55dscH7JJu3nF+Y52mliNODsCwAAAIDEAkEGAAAAAIkFgowPKlWqRPfee6/4m0bSfn65cI44v2SD80s2aT8/Vc4x9c6+AAAAAEgv0MgAAAAAILFAkAEAAABAYoEgAwAAAIDEAkHGhoceeoh69OhBVatWpZo1a5q+Z+3atXTeeeeJ99SvX59+//vf08GDB22/d9u2bdS/f38Rc8/fO3jwYNq5cyfFzbRp00TSQLPHnDlzLD/Xq1evMu//3e9+RyrSvHnzMm195JFHbD+zd+9eGjZsGNWpU4eqV69Ov/zlL+mHH34g1Vi9erUYSy1atKAqVarQMcccI5zw9u/fb/s51ftv9OjRot8qV65M3bt3p9mzZ9u+/7XXXqPjjjtOvL99+/b03//+l1Rk5MiR1LVrV5Gsk+eOvn370tKlS20/8/LLL5fpKz5PFbnvvvvKtJX7JQ19Zzef8IPniyT234wZM+iCCy4QCei4bVOmTMl6nV1q77nnHjr66KPFHHPWWWfR8uXLA7+H3QJBxgZeAC677DK67rrrTF8vKSkRQgy/b+bMmTR+/HgxULmj7WAh5quvvqIPPviA3n77bTF4rr32WoobFtq+//77rMc111wjFsaTTjrJ9rNDhgzJ+txjjz1GqvLHP/4xq6033HCD7ftvueUW+ve//y0m2enTp4tM0ZdccgmpxpIlS0Qm6+eee06Mrz//+c/07LPP0p133un4WVX77x//+AcNHz5cCGTz58+njh070tlnn02bNm0yfT/fh/369RMC3YIFC4RwwI/FixeTavBY4gXv888/F3PBgQMHqE+fPrRr1y7bz/EGSN9Xa9asIVVp27ZtVls/+eQTy/cmqe80eIOnPz/uR4bXjST2365du8Q9xoKHGTwvPP3002JemTVrFlWrVk3cj7zZC+oe9gRHLQF7xo0blyksLCxz/L///W8mPz8/s3HjxtJjY8aMyRQUFGT27dtn+l1ff/01R4ll5syZU3rsnXfeyeTl5WXWr1+fUYn9+/dn6tWrl/njH/9o+77TTz89c9NNN2WSQLNmzTJ//vOfpd+/ffv2TIUKFTKvvfZa6bFvvvlG9OFnn32WUZ3HHnss06JFi8T2X7du3TLDhg0rfV5SUpJp2LBhZuTIkabvv/zyyzPnnXde1rHu3btnfvvb32ZUZ9OmTWJcTZ8+3fVcpCL33ntvpmPHjtLvT3LfafB9dMwxx2QOHTqU+P4joswbb7xR+pzP6aijjsr86U9/ypofK1WqlJk8eXJg97AXoJHxwWeffSbUnw0aNCg9xpIm157gHbHVZ9icpNdwsHqOSymwhKsSb731Fm3dupUGDRrk+N5JkyZR3bp1qV27djRixAjavXt3JG30ApuS2EzUuXNn+tOf/mRrCpw3b57YKXMfabDqu2nTpqIvVaeoqIhq166dyP5jTSdff/215/uEn1tdez6uf792Tyalrxin/mIzdLNmzUR9m4suushyrlEBNjuwmaJly5ZCE82meCuS3HfaeJ04cSJdffXVtnX9ktR/elatWkUbN27M6iMuH8CmIqs+8nIPeyH1tZbChDtVL8Qw2nN+zeozbA/XU758eTF5WX0mLsaOHSsmEqdaVb/+9a/FjckT1pdffkm33367sPW//vrrpBo33ngjdenSRVxvVmXzos3q3SeffNL0/dwnFStWLOMjxf2sWn8ZWbFiBY0aNYoef/zxRPbfli1bhPnW7B5jM5qbe1L1vmKT4M0330w9e/YUwqQVbdq0oZdeeok6dOggBB/uWzYJ82IYdk05t/ACx6Z2bjPfY/fffz+ddtppwlTEfkFp6TsN9ifZvn07XXXVVanoPyNaP7jpIy/3sBdyTpC544476NFHH7V9zzfffOPolJb2c/7uu+/ovffeo1dffdXx+/X+PayhYkewM888k7799lvhcKrS+bGtVoMnExZSfvvb3wrHS1Wzb3rpv/Xr19M555wjbPXs/6Jy/wESvjK8wNv5kDCnnHKKeGjwInj88ccLv6gHHniAVOLcc8/NutdYsGGBmecU9oNJG7zx43PmDUEa+i9J5Jwgc+utt9pKzAyrQWU46qijynhfa9Es/JrVZ4xOTmza4Egmq8/Ecc7jxo0T5pcLL7zQ9e/xhKVpBKJYCP30KbeVrz9H/PBuyQj3CatHeael18pwP4fVX37Pj52Re/fuLSbJ559/Xvn+s4JNXeXKlSsTIWZ37fm4m/erwPXXX1/q9O92V16hQgVhIuW+Uh2+f4499ljLtiax7zTYYffDDz90rcVMUv8ddaQfuE94s6PBzzt16hTYPeyJwLxtctjZ94cffig99txzzwln371799o6+86dO7f02HvvvaeUsy87dbGD6K233urp85988ok4xy+++CKjOhMnThR9uG3bNltn33/+85+lx5YsWaKss+93332Xad26deaKK67IHDx4MPH9x46C119/fZajYKNGjWydfc8///ysY6eccoqSDqN8n7ETJDs+Llu2zNN3cB+3adMmc8stt2RUZ8eOHZlatWpl/vKXvyS+78wcm9kR9sCBA6npP7Jw9n388cdLjxUVFUk5+7q5hz21NbBvSiFr1qzJLFiwIHP//fdnqlevLv7nB9+Q2iBs165dpk+fPpmFCxdm3n33XRHlM2LEiNLvmDVrlhiovMBonHPOOZnOnTuL13jR4IWn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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 查看turnover和p_change之间的关系\n",
    "data.plot(x=\"p_change\", y=\"turnover\", kind=\"scatter\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "958e25a2-af79-4f82-99d4-5c3dd2bec58b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: xlabel='volume', ylabel='turnover'>"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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R4+WrKysfOd8+eWX0r17d+Oa68qUzzzzzAVteeedd+Syyy4zzmnVqpWsWbPGclvsaObMmdKhQwdjtevatWvLkCFDZN++ffnOOX36tIwfP15q1KghlStXlhtvvFF++umnfOd89913MmDAAKlUqZLxOlOnTpVz587lOychIUHatWtnzFpo1qyZLFmyxPLPv5m22NGCBQukdevWeYuEde7cWT755JO8x7nGvjFr1izjd8d9992Xd4xrXXaPPPKIcV09b/r7Maivsc5ygnkrVqxwRUZGul599VXXV1995RozZoyratWqrp9++skVitasWeN66KGHXO+//77OlnOtXLky3+OzZs1yxcbGulatWuXavXu3a9CgQa4mTZq4fvvtt7xz+vXr52rTpo3r888/d23atMnVrFkz1+233573eEZGhqtOnTquoUOHuvbu3etavny5q2LFiq6XXnop75zNmze7IiIiXM8884zr3//+t+svf/mLq3z58q49e/ZYaosdXXvtta7Fixcb33tycrLr97//vathw4aurKysvHPuueceV1xcnGvdunWuHTt2uDp16uTq0qVL3uPnzp1ztWzZ0tWnTx/Xrl27jL+3mjVruqZNm5Z3zsGDB12VKlVyTZ482biG8+bNM67p2rVrLf38l9QWu/rwww9dH3/8sWv//v2uffv2uf785z8bP0N63RXX2Pu2b9/uaty4sat169aue++9N+8417rsHn74YdcVV1zh+vHHH/Nu6enpQX2NCTQWdezY0TV+/Pi8+7m5ua569eq5Zs6c6Qp1BQPN+fPnXRdddJFr9uzZecdOnjzpioqKMkKJ0v8J9HlJSUl553zyySeusLAw1w8//GDc//vf/+6qVq2aKycnJ++cBx54wHXppZfm3b/llltcAwYMyNee+Ph419133226LU6RlpZmXLMNGzbkfR/6wfvOO+/knfP1118b52zdutW4r7+MwsPDXceOHcs7Z8GCBa6YmJi86/qnP/3J+AXo6dZbbzUCldmffzNtcRL9uVu4cCHX2Ad+/fVXV/PmzV2ffvqp65prrskLNFxr7wWaNm3aFPpYsF5jhpwsOHPmjHzxxRfGUIXnXlF6f+vWrQFtmx0dOnRIjh07lu966b4c2uXovl76VYeZ2rdvn3eOnq/Xddu2bXnnXH311RIZGZl3zrXXXmsMu5w4cSLvHM/3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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 查看turnover和volume之间的关系\n",
    "data.plot(x=\"volume\", y=\"turnover\", kind=\"scatter\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "1bcf768d-b16f-4fa2-b64b-88303801948e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: xlabel='high', ylabel='low'>"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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y7odOnSQ7du3yw9+8AO58cYbzV8qdevWdfvyAjN1/cEHH5SrrrrK/OWhDhw4IPXr15dmzZqFPfb888839yFzn7264447pF27dqZ27N1335XHHnvM1NHMmTPH1esNio0bN5pfnloPo3Uwc+fOle7du8uGDRv4uXfps8+Vn3uCTA762te+VvPPPXv2NIVinTp1Mqs01113navXFhRar7Fp0yZZtmyZ25eSc6J99nfffXfYz32rVq3Mz7uGef35R2p0dVdDi66G/eUvf5HRo0ebehi499l37949J37u2VqCdOzY0Sw7btu2ze1LCYT7779fXnnlFVm0aJEpxLO0bNlSTp06JWVlZWGP19Mbeh8y99nbufLKK82f/Nynh666dO7cWXr37m1OkemBg9/85jf83Lv42efKzz1BBvLxxx+bGhlN6kie1lbrL1Jd1n3zzTfN1l0o/UsmPz9fFi5cWHObLvHu3r07bD8b6f/s7eh/wSp+7jO3xXfy5El+7l387HPl556tpQD67LPPwtL2zp07zQ+vFj7q14QJE0wfB/2vIV1e/N73vmfS/LBhw1y97iBsacycOVPmzZtn+plY+/+FhYXSqFEj8+eYMWPk4YcfNv87aM+HBx54wPxl3q9fP7cvP9Cfvf6c6/033XST6WWitQJ6JHjQoEFmaxWp0QJSrbPTAt6jR4+az1q3qhcsWMDPvYuf/fZc+bl3+9gU0m/RokXmaGPklx67rqysrB46dGh18+bNzZHIdu3aVY8dO7b6wIEDbl+279l95vo1derUmsccP368+t577zXHIxs3blx92223Ve/fv9/V686Fz3737t3VgwYNqi4uLq5u0KBBdefOnav/4z/+o7q8vNztSw+Eb3/72+bvkvr165u/W6677rrqv//97zX383Pvzme/O0d+7vP0/7gdpgAAAJJBjQwAAPAtggwAAPAtggwAAPAtggwAAPAtggwAAPAtggwAAPAtggwAAPAtggwAAPAtggwATxg8eLA8+OCDUe/Py8uTl19+2fHraZt2fU7ksEIAwcKsJQC+sH//fikqKnL7MgB4DEEGgC/okFMAiMTWEgDPqKqqMtPYdUqyBpcnn3wy6tbS8uXL5dJLL5WGDRvKFVdcYe7Tx+ik91Dr1q0z9zdu3FgGDBggW7duzeq/E4DMIsgA8Ixp06bJF77wBVm1apU8/fTT8pOf/ERef/31Wo+rqKiQ4cOHS8+ePeXtt9+Wn/70p/LYY4/Zvubjjz8ukyZNkrVr10q9evXk29/+dhb+TQBkC1tLADyjV69e8sQTT5h/7tKli/zud7+ThQsXyg033BD2uJkzZ5rVl//+7/82KzLdu3eXvXv3ytixY2u95lNPPSXXXHON+efvf//78qUvfUlOnDhhngfA/1iRAeCpIBOqVatWcvDgwVqP0+0hfWxoGOnbt2/c19TXU3avCcCfCDIAPCM/Pz/se1110bqZdL2mvp5K9TUBeAdBBoDvdO3aVTZu3CgnT56suW3NmjWuXhMAdxBkAPjOHXfcYVZV7r77btmyZYssWLBAnnnmmbBVFwC5gSADwHcKCgpk/vz55qi1HsHWk0k//vGPzX0U8QK5Ja+6urra7YsAgFTNmDFD7rrrLikvL5dGjRq5fTkAsoTj1wB8afr06dKxY0e54IIL5J133jF9ZP7t3/6NEAPkGIIMAF86cOCA2U7SP/VY9Ve+8hXTMwZAbmFrCQAA+BbFvgAAwLcIMgAAwLcIMgAAwLcIMgAAwLcIMgAAwLcIMgAAwLcIMgAAwLcIMgAAQPzq/wOydy04OvaRpgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 查看最高价和收盘价之间的关系\n",
    "data.plot(x=\"high\", y=\"low\", kind=\"scatter\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "211db8d0-ba58-48cc-b6ea-f40b571765b2",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
